1. 函数的定义
(1)格式
函数类型 函数名(形式参数表列) //函数类型是指函数返回值的类型,
{ 声明部分 若无返回值,定义函数类型为void
语句 }
(2)形参定义格式:
类型 参数名,类型 参数名…
例 int max (int x , int y)
{
……
}
2. 函数的调用
(1)格式
函数名(实参表列);
【注意:调用时应在主函数中声明,声明与函数定义的首行相同即可声明是语句,需要在后面加分号,而定义函数不需要加分号】
(2)形参与实参
形参必须指定类型,若形参与实参类型不一致,则自动按形参类型转换;
实参必须有确定的值;
单向传递,只能由实参向形参传递,函数调用结束后,形参内存释放。
(3)函数返回值
若return后的表达式类型与返回值类型不同,按函数类型转化;
若缺return或return未带回返回值,则返回一个不确定的值;
为明确不带返回值,应用void定义。
(4)一维数组名做函数参数
数组名表示数组第一个元素在内存中的起始位置;
形参也应定义为数组形式,数组长度可以省略,但[ ]不可以省;
形参其实是一个可以存放地址的变量。
3. 函数的递归调用
递归调用:一个函数直接或间接地调用了函数本身。
递归函数:在函数体内调用函数本身。
【建议这部分多看书】
4. 变量的作用域
局部变量:局部变量的有效范围只在所定义的函数内,主函数也不例外,不同函数中可以使用同名变量。
全局变量:全局变量定义在函数外部,其有效乏味从定义变量的位置到文件结束,变量名第一个字母通常大写。
【注意:如果在同一个源文件中,全局变量与局部变量同名,则在局部变量的作用范围内,全局变量不起作用!】
5. 变量的存储类型
auto变量:未声明为static存储类别的函数中的局部变量,数据存储在动态存储区,在函数调用结束时就是烦这些存储空间。(e.g. auto int a 通常可以省略auto)
static声明局部变量:特点是变量存储在静态存储区中,函数编译时赋初值,函数调用结束后不释放这些存储空间。(e.g. static int a)
register变量:只有函数内定义的变量或形参可以定义为寄存器变量。作用同auto变量。
Extern变量名:声明外部变量。
