1 宏定义
宏只是最基本的替换,而不是运算。
#define ONE 1
#define TWO=ONE+ONE
int a = 10,b=20,c;
c=ONE +TWO *20 + a;
c的值会是多少???一定要记得是替换而不是运算。也就是说,上述c等价于 c= ONE + ONE + ONE *20 +a;
2 static
默认值是 0
他有局部的static 和全局 static 。如果局部变量加上static 的话,只要程序没有结束,该变量不会被销毁,会一直存在
3 指针函数返回值
只能是全局变量
只能是字符串常量 ,字符串常量是无法修改的 char *p ="adfadf"; p是不允许修改的,因为他是字符串常量
只能是静态变量
堆的地址
4 数组默认值
char a[10];
那这10个元素都是随机的
如果是char a[10] = {'a','b','c'};
那除了赋值的3个元素, 其他都是0
static char a[10] 则这10个元素的默认值都是0
5
6 gcc 调试
命令行传参数的gdb调试。。。用 set args 来输入参数