Sunday, October 10, 2010

c专家编程-这货不是bug,而是语言特性

本章从c语言的一些看上去有点缺陷的地方来提醒我们对相应的知识点需要加倍注意

1 switch的fall through,这个很明了,case后记得加break,否则依次执行

2 字符串会自动连接,如
#include

int main(int agrc, char* argv[])
{
printf("hello"
"world \n");
}
会打印出结果helloworld,这个时候要注意,在下面例子中
char * a[] = {
"one",
"two"
"three"
};
因为"two" 之后少了逗号","而变成了"one"和"twothree"组成的字符串数组

3 优先级以及操作符的重载(比如*可以是乘法,也用于指针),有时候并不像想象的很自然的意思,需要对优先级更加理解和掌握

4 局部变量在堆栈分配内存,函数退出,内存被回收问题,可以通过用全局变量,静态变量,显示分配内存,让调用者提供内存(传入以分配内存指针)等等方式来解决

5 lint程序不应该分出来,主要意思是,代码需要更多的检验

No comments:

Post a Comment