人民邮电出版社,Andrew Koenig 著,高巍译,王昕审校
C Traps and pitfalls
Andrew Koenig还有C++沉思录大作
绝对的经典
1. 词法分析中的贪心法:每一个符号应该包含尽可能多的字符
2. 如果一个整形常量的第一个字符是0,将被视为8进制。0100 = 64, 而不是二进制
3. printf("hello\n");与char hello[]={'h','e','l','l','o','\n',0}; printf(hello);等价
4. 函数指针 int (*fp)();可以简写为 int fp()
5.简单的优先级:算>关系>移位>逻辑
6. struct A{..}后面最好写上分号,有些编译器不会报错
7.else始终与同一括号内最近的if匹配
8.C语言只有一维数组,而且在编译的时候就要把数组的大小确定下来
9.多维数组是一维数组模拟出来的
10.int a[32][11];意思是a是一个拥有32个元素的数组,每个元素拥有11个整形变量
11. 对于int a[32][11]; 如果 int i = a[4][5]; 可以写成 i = *(*(a+4)+5);或者i=*(a[4]+5);
12. int a[32][11]; int (*ap)[11]; ap = a;这样才不会错
13.数组名作为函数参数,数组名就会被转化为指向该数组第一个元素的指针
14.extern char *p;与extern char p[];是不一样的