前言:
首先,纠正一个可能的认知错误。编程语言并非专指以某种名称命名的语言,而是一类编程规范,或者说语法规则。
拿BASIC(初学者通用指令代码)举例, 基于BASIC衍生出了VB、QB等语言,它们统称为BASIC语言,完全适用于BASIC的语法,但由于开发者的目的不同,他们又有各自适合的方面。VB是微软公司开发出的可视化编程语言,可以很容易开发出拥有图形界面的软件。QB也是由微软基于BASIC开发的,但它是面向过程的。
笔记:
1.using namespace std;不要用在头文件里,可能会造成命名冲突,在源文件里可以适当使用。
2.播放声音:使用mciSendCommand函数播放声音时,需要这样,而且位置不能变
#include<windows.h>
#include<Mmsystem.h>
#pragma comment(lib,"winmm.lib")
3.不要使用delete多次释放同一个用new产生的变量,最好new和delete配套使用。
4.头文件中只能放声明,执行代码放到.cpp/.c文件中,用#include导入头文件。使用“#include<>”时,编译程序会自动到默认文件夹下寻找头文件,使用“#include“””时,编译程序先在用户文件下寻找头文件,没有的话再回到默认文件夹寻找。因此,自定义的头文件应放在与你的.cpp/.c文件同一目录下,用“#include""”导入。
5.算法是整个程序中最关键的部分,一个良好的算法会使程序的执行效率非常高,因此,不要在没想清楚的情况下就直接去写程序,走一步算一步的编程思维会浪费你更多的时间,慢慢的你就会发现程序会越写越复杂,每一段程序都是在给之前的程序填坑。以至于最后写出来的程序即使能执行,效率也十分的低下,还会隐藏更多的错误。
6.使用vector可以灵活的定义数组。当你不知道要用多大的数组时,可以使用vector,任意修改数组的容量,向其中加入元素。如果本来数组就可能会有很多元素,建议在声明时就声明一个合适大小的数组,不够再添加就行了。这样有助于提高程序效率,vector每添加一个元素,就会检查是否有足够的容量储存,不够的话,会自动寻找一个比原数组大1.5到2倍的储存存空间,再把数组复制过去,这就解释了为什么应该预定义一个合适大小的数组。要包含头文件vector
7.在很多编译器中,对于main()的定义多为int main(),而不是void main()
8.char类型事实上可以看做整数操作,范围是-128~127。而''(单引号)可以把里面的字符转化为对应的ASCII码。既然可以看作整数,那么for(char i=0;i<100;i++);也是合法的操作;int占4字节,short占2字节,char占一字节,掌握这个后,就可以尝试区优化程序的结构。
比如:char ch='5';//这句话把5对应的ASCII 码赋值给ch,当你用“”是便会出错,因为双引号引起的是字符串。
9.c/c++中数组的名称代表的是该数组第一个元素指向的地址,也就是这个数组的开始地址;例如int num[20];//其中num指向的是num[0]对应的地址,num==&num[0];当定义一个指针时,你也可以向数组那样操作它,例如char* ch;//ch[0]=*ch,ch[1]就是*ch之后的地址对应的值;关于指针的说明在下面
10.指针:举例来说char* ch;//这句话定义了一个名称为ch的指针,ch的值是一个地址,*ch的值是该地址对应的值;“*”又叫解除引用符号;如果要给它赋值,可以这样:char b=20;ch=&b;或者把一个数组赋给一个指针char b[20]="zxcvbnm";ch=b;基于这样的使用,我们就可以让自定义的函数返回一个数组的指针,例如:
int* function() { int* num=new int(3); num[0]=20; num[1]=30; num[2]=40; return num; }11.关于for循环的使用:典型的用法是for(int i=0;i<20;i++){}//循环体如果只有一条语句,则可以省略{};否则必须加上{}。因此,对于循环嵌套可以是:
for(i=0;i<20;i++) for(j=0j<20;j++){}上面的代码中将会执行400次循环。
当你要依次输出用vector定义的数组时可以这样:
vector<int>num(20); for(int it=num.begin();it!=num.end();it++) cout<<*it;12.三目运算符(?:),可以把if(){}else{}语句简单化,例如if(20>30){cout<<"20>30"}else{cout<<"30>20"}可以写成20>30?cout<<"20>30":cout<<"30>20"
13.预编译:#define的作用是在编译时替换文本;类似于定义常量,例如:#define pi 3.1415926535 //定义了圆周率pi;
但切记,#define只是单纯的文本替换,并非正式的执行语句。
举例:
#define max(a,b) a>b?a:b这段代码定义了一个可以比较出最大值的函数max().
另外,还有条件编译指令(#if、#elif、#else、 #endif),常见用法如下:
#ifdef(fun1)//如果已经有宏定义fun1,则 //代码 #elif(fun2)//否则如果有宏定义fun2,则 //代码 #else//否则 //代码 #endif使用#if可以避免重复定义。
还有#pragma、#program等指令,具体参见百科