function
Variable as a function of the parameters
注:1.函数定义-函数声明-函数调用。
2. 在C语言中实参向形参传递是单向传递。实参和形参是在不同的储存单元。
3.函数的返回值发生冲突时按着函数的类型返回。
函数的定义
int function(int a,int b);
函数的声明(可以不写参数只声明类型)
int function(int,int);
Array as a function parameter
数组元素作为函数实参(与变量相同)
数组名作为函数实参(此时形参应为数组名、指针)数组名作为函数参数时,传递数组的首元素地址。
int function(int array[10])
1. 数组名作为函数参数时,在主函数和被调函数中都定义数组
2.实参数组与形参数组类型应一致(不然会出错)
3.形参数组本身没有大小无用,只是将实参首地址传递给形参,因此在定义时可以不指定形参数组的大小,后面只跟[]就可以。
4.数组名作为函数实参时不是数组元素的传递,而是数组首地址的传递,二者公用一段内存,此时改变形参的值实参就会随之发生变化。
Multi-dimensional arrays as a function argument
不可省略第二维以及更高维。
合法:int a[3][2]
int a[][3]
不合法:int a[][]
Local and global variables
Local variables
Global Variables
尽量少用全局变量
如果在一个函数中有效的全局变量与局部变量同名,则全局变量无效
Variables of storage class
auto variable (automatic variables) (dynamic storage class)
数据存储在动态存储区中
用则分配地址,不用释放。
With a static local variable declaration (static local variable) (static storage class)
一次声明后再次不是放存储空间,再次调用时仍保留上一次的值。此时就需要将变量指定为静态局部变量,用static命名。
当静态局部变量在不赋初值切被调用时,会自动赋初值值0(数值型变量)和空字符(字符型变量)。
rdgister variable
只有局部自动变量和形参可以作为register(寄存器)变量,其他类似全局变量,局部静态变量(static)不行能定义为寄存器变量。
extern external variables
声明变量是已经定义的外部变量
Statement by static external variables (static external variables)