符号常量为:#define
c++中推荐使用const常量
^表示位异或,即相同为0,不同为1
将整个数组赋值为0:
int a[10]={0}; //或是 int a[10]={};二维数组作为参数时,第一维不需要填写长度,第二维需要填写长度,如:
void change(int b[][5]){}指针作为参数时候,若要交换指针中存放的地址(此时相当于传入一个地址变量,而不是指针),则要用二级指针才能改变,若要交换指针中存放的地址的内容(此时相当于一个指针),以及指针就可以改变。总之,该地址要用二级指针,改内容要用以及指针。
注意:引用仅对变量作用,常量不可使用。
例如函数swap不可以穿入地址常量,如swap(&a,&b),应该先用指针变量p1和p2存放这两个地址。
指针的引用(即改变指针的指向)除了用二级指针还可以用引用:int* &a(把int*看成类似int的数据类型)
(1)结构体中不能定义自己本身,但可以定义自身类型的指针变量(如常用的next指针)
(2)使用构造函数初始化结构体
student(){} //默认生成的构造函数 student(int _id,char _gender):id(_id),gender(_gender){} //自己的构造函数注意:一旦定义了自己的构造函数,默认构造函数就会被覆盖,就不能只定义不赋值。如:student st;这时候可以手动加上默认的构造函数。
11.浮点数的比较
简单的浮点数比较可以使用“==”,但是一旦经过复杂的运算之后,精读损失不能忽略,因此可以将比较操作写成宏定义。
const double eps=1e-8; //误差 #define Equ(a,b) ((fabs((a)-(b)))<(eps)) //浮点数的等于比较 #define More(a,b) ((fabs(a)-(b))>(eps)) //浮点数的大于比较 #define Less(a,b) ((fabs(a)-(b))<(-eps)) //浮点数的小于比较 #define MoreEqu(a,b) ((fabs(a)-(b))>(-eps)) //浮点数的大于等于 #define LessEqu(a,b) ((fabs(a)-(b))<(eps)) //浮点数的小于等于一般OJ系统一秒能承受的运算次数大概是10的7次方到10的8次方,此时若O(n²)的n的规模为1000是可以承受的。OJ中空间一般够用,所以常常采用空间换时间的策略。