1, C语言中,所有函数参数都是通过值传递的。
传递给被调用函数的函数值存放在临时变量中。C语言中,被调用函数并不能修改主调函数的参数值,而只能修改私有的临时副本值。
若要调用函数修改主调函数参数值,可以采用指针。
2, C语言中字符串常量以字符数组的形式储存。
strlen(s)返回字符串常量s的长度,但不包含末尾的/0.
枚举是一个常量整形值的列表。若没有显式说明,第一个枚举名的值为0。
不同枚举中的名字必须乎不相同,而同一枚举中不同的名字可以有相同的值。
枚举比#define的优势:
a, 枚举可以自动生成常量值。
b, 声明枚举类型变量,编译器不检查这种类型的变量中存储的值是否为该枚举的有效值,但枚举变量做此检查。
c, 调试程序可以以符号形式打印枚举变量的值。
3,外部变量
所有外部变量都必须定义在任何函数之外,且只能定义一次,外部变量定义后,编译程序将为它分配存储空间。函数在使用外部变量时必须声明变量,可以使用extern或者是隐含表示。
非自动变量只能进行一次初始化操作。
默认情况下,外部变量与静态变量的值被初始化为0;自动变量的值为未定义值,即为无效值。
4,常量表达式在编译时求值,而不是运行时求值。
const修饰数组时,表示数组中的所有值都不能被修改。
5,自增自减只作用于变量。
6,按位运算符
只可作用于int, char, short, long
& ! ^(异或)<<(左移) >>(右移) ~取反
7, switch
switch表达式的值是“常量整数值”。
continue语句只用于循环语句,不用于switch语句。
8,extern
extern表明此处为外部变量声明(非定义)
用static声明限定外部变量与函数,可以将其后声明的对象的作用域限定为被编译源文件的剩余部分。
用static限定外部变量,可以达到隐藏外部变量的目的。
如果将函数声明为static,则该函数名除了对该函数声明所在的文件外,其余文件都无法访问。
static修饰局部变量,意味着不管其所在的函数是否被调用,它都一直存在。即它是一种只能被特定函数使用但一直占用存储空间的变量。
对于外部变量与静态变量而言,初始化表达式必须是常量表达式,且只初始化一次。
9, register声明只适用于自动变量和函数的形参。
无论寄存器变量是否放在寄存器中,它的地址都不可访问。
10, 预处理器中的#
形参不允许用带引号的字符串代替。但在替换文本中,若参数名以#作为前缀,那么它将由带引号的实际参数替换。
##用于连接实际参数。