1.要从逻辑上删除一段C代码,更好的办法是使用#if指令,如:
#if 0
statements;
#endif
在#if和#endif之间的程序段就可以有效地从程序中移除,即使这段代码之间原先存在注释也无妨,所以是一种更安全的方法。
2.在C语言中,数组参数是以引用形式进行传递的,也就是传址调用,而标量和常量则是按值传递的。
例如:
int readColumnNumbers(int columns[], int max)
{}
在函数声明的数组参数中,并未指定数组的长度。这种格式是正确的,因为不论调用函数的程序传递给它的数组参数的长度是多少,这个函数都将照收不误。如果确实需要数组的长度,它的值必须作为一个单独的参数传递给函数。
这也从侧面说明,所谓的数组是按引用传递的,其实就是以数组首个元素的地址来表示数组,其传递的其实是该地址的副本,本质上仍然是按值传递。
3.尽管C语言并不存在string数据类型,但在整个语言中,存在一项约定:字符串就是一串以NUL字节结尾的字符。NUL是作为字符串终止符,它本身并不被看作是字符串的一部分。
NUL是ASCII字符集中’\0’字符的名字,它的字节模式为全0。NULL指一个值为0的指针,它们都是整型值。
4.由于scanf函数的实现原理,所有标量参数的前面必须加上一个&符号。例如:
scanf("%d", &columns[num]);
另一个实用的读取终端字符串的例子:
while((ch = getchar()) != EOF && ch != '\n')
{}