C language functions and variable types

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)

Guess you like

Origin blog.csdn.net/qq_43448742/article/details/89669426