1:c = getchar() != EOF等价c = (getchar() != EOF)
2:nc = nc + 1等价于++nc,后者效率高,更精炼
3:字符计数:
while (getchar() != EOF)
++nc;
4:行计数:
while ((c = getchar()) != EOF)
if (c == '\n')
++nl;
5:单引号中的字符为一个整数值,我们称其为字符常量
6:'\n'与"\n"区别 前者是字符常量,后者是包含一个字符常量的字符串
7:判断一个字符:
if (c >= '0' && c <= '9')
++ndigit[c-'0'];
else if (c == ' ' || c == '\n' || c == '\t')
++nwhite;
else
++nother;
8:多路判定:
if
else if
.....
else
9:多路分支:
switch
case:
.......
10:出现在main函数之前的函数声明语句称为函数原型,后面的函数定义、用法必须一致,函数参数名不要求一致,但是类型必须一致
11:传值调用:c中被调函数不能改变主调函数的变量值,而只能修改其私有的临时副本的值
12:被调函数如何修改主调函数的变量值:调用者须向被调用函数提供待设置值的变量的地址,而被调用函数须将对应的参数声明为指针类型,并通过他间接访问变量
13:自动变量=局部变量
14:外部变量:所有函数都可以通过变量名访问得到,定义在所有函数之外,程序执行期间一直存在,即使对外部变量赋值的函数返回后,这些外部变量的值依然保持不变
15:需要访问外部变量的函数中,必须声明相应的外部变量,声明时可以通过extern 显示声明,也可以通过上下文隐式声明
16:某些情况可以省略extern声明,在同一个源文件中,外部变量出现在使用它的函数之前,那么函数就不需要使用extern声明了,通常做法就是将所有外部变量放在源文件开始处,这样就可以省略extern声明了。
17:假设某变量在file1中定义,而在file2和file3中使用,那么file2和file3中就需要使用extern来建立该变量与其定义之间的联系
--------------------------------------------------------------------------------------------------------------
18:由于例程的名字通常以下划线开头,所以变量名不要以下划线开头
19:c大小写敏感
20:变量名使用小写,符号常量名全部使用大写
21:局部变量一般使用较短变量名,而外部变量使用较长变量名
22:下划线可以使变量名可读性更强
23:变量尽量见名知意
24:c中基本数据类型:
char
int
double
float
25:基本数据类型的限定符:short、long 可以作为int的限定;short int sh ; long int num ; 但是通常人们把int关键字省略,习惯写成short sh ; long num;
26:int通常代表特定机器的整数的自然长度,short通常16位,long通常32位,int可以是16或者32位,但是一个原则,short至少16位,long至少32位,short不能长于int,int不能长于long
27:类型限定符signed和unsigned可以限定char和任何整数
28:unsigned类型的数总是正数或者0
29:常量中:u和U结尾表示无符号常量,ul和UL表示unsigned long
30:没有后缀的浮点型常量为double型,带f和F的 表示float,带l和L的浮点型为long double类型