1.C语言是一种*格式的程序设计语言,没有规则要求我们必须如何书写语句。然而,如果我们在编写程序时能够遵守一些约定还是非常值得的,它可以使代码更加容易阅读和修改。另外,预处理命令有较为严格的规则。
2.要从逻辑上删除一段代码,最好使用预处理命令,例如:
#if 0
statements
#endif
3.C语言中所有传递给函数的参数都是按值传递的。
4.NUL和NULL的区别:
NUL是ASCII字符集中'\0'字符的名字,其字节模式为全0。NUL是作为字符串终止符,本身并不被看作是字符串的一部分。另外,并不存在预定义的符号NUL,如果你想在程序中使用它而不是字符常量‘\0',那么,必须自行定义。
NULL指一个其值为0的指针,符号NULL一般在头文件<stdio.h>、<ios.h>或<windef.h>中定义。在笔者使用的编程环境(Mingw)中,在<windef.h>中找到如下定义:
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void*)0)
#endif
#endif
关于NULL的更多疑问,可以参考《C FAQ》第五章。
5.由于scanf函数的实现原理,所有标量参数的前面必须加上一个"&"符号。数组参数前面不需要加上"&"符号,但即使加上一个"&"符号也没有什么不对。使用所有格式码(%c除外)时,输入值前面的空白(空格、制表符、换行符等)会被跳过,输入值后面的空白表示该值的结束。另外,在使用scanf函数格式码时,注意其与printf函数格式码的区别。
6.先看代码:
int ch;
while((ch = getchar()) != EOF && ch != '\n')
putchar(ch);
为什么变量ch被声明为整型?
这是因为EOF是一个整型值,它的位数比字符类型要多,把ch声明为整型可以防止从输入读取的字符意外地被解释为EOF。但同时,这也意味着接收字符的ch必须足够大,足以容纳EOF。其值在头文件<stdio.h>(摘自Mingw)中有定义:
/* Returned by various functions on end of file condition or error. */
#define EOF (-1)