读《The C Programming Language》。这是一个乍一看很简练很清晰的语言,实际上不是,里面有很多很多容易出错的细节。从开始学C到现在已经九年,重看这本经典著作,还是发现很多自己不太清楚的东西。
1- 使用外部变量的时候,可以用extern声明,也可以根据上下文省略。例如下面程序中的extern int max; 就是可以省略的:
#include
int max;
int main() {
extern int max;
printf("%d\n", max);
return 0;
}
2- 如果一个变量在file1中被定义,在file2, file3中被引用,那么在file2和file3中引用这个变量之前应该用extern声明它。一般的做法是把所有的extern声明集中起来放在一个头文件里,#include一下就行了。
3- 为了兼容以前的非ANSI C,如int fun(); 这样的函数声明,意思不是“一个不带参数的函数”,而是“老式函数声明和调用,禁止编译器对调用这个函数的语句进行参数类型核对”。例如下面的程序编译可以完全通过,没有错误和警告:
#include
int fun();
int main() {
char c = 'c';
char *p = &c;
fun(p);
return 0;
}
int fun(uc)
unsigned char uc;
{
return -1;
}
所以如果要表示函数“不带参数”,一定要写int fun(void)
4- ANSI C中可以用const说明常量
5- 不要用下划线作为变量名字的开头,因为库函数中这样用法很多,可能冲突
6- C对各种变量的内存使用,没有严格规定。标准只规定short和int类型至少16bit;long至少32bit;且占用的位数short<=int<=long。
7- 浮点常量缺省类型是double,除非加上后缀f。
阅读(1583) | 评论(0) | 转发(0) |