1. 函数的三种形式
1.1 函数的定义
函数类型 函数名(数据类型1 形式参数1, 数据类型2 形式参数2, ..)
{
函数体;
return 返回值;
}
注意:
1. 函数类型为函数运行结果的类型
2. 函数返回值与函数类型不匹配时,强制将返回值转换为函数类型后返回
3. 函数类型不写默认为int类型
4. 函数的命名与变量命名规则相同
5. 函数没有返回结构,函数类型写成void
1.2 函数的调用
函数名(实参1, 实参2, 实参3, ..);
主调函数:主动调用函数的函数,(例:main函数)
被调函数:被调用的函数(例:自己编写的函数)
注意:如果实参类型与形参类型不匹配,那么会将实参类型强制转换为形参类型传入到函数中
1.3 函数的声明(函数头+" ; ")
被调函数在主调函数下方时,需要对被调函数进行声明
函数类型 函数名(数据类型1 形式参数1, 数据类型2 形式参数2, 数据类型3 形式参数3, ..);
2. 变量的作用域及变量的生存周期
2.1 变量作用域
变量能够使用的范围
2.2 变量生存周期
从变量被分配空间到变量分配空间被回收的整个过程
2.3 变量存储类型(默认auto)
1. auto——自动型变量(局部变量)(存储在栈区)
1. 局部变量作用域在该变量定义最近的大括号内,超过大括号范围不能在使用该变量
2. 未经初始化为随机值
3. 程序执行到变量定义时为变量开辟空间
4. 超过变量作用域回收变量空间.
2. register——寄存器变量(存储在寄存器中)
注意:若寄存器存满,则将寄存器变量放在栈区中,等价于auto类型
3. extern——外部存储
1. 作用
声明一个变量时外部存储的变量
声明外部存储的函数
2. 定义与声明的区别
1. 定义:之前变量是不存在的,定义该变量为变量分配内存空间
2. 声明:之前变量是存在的,声明该变量的类型,同时声明变量是存在的
4. static——静态变量(数据区)
作用
1. 修饰变量,让该变量称为静态变量
2. 限定变量或者函数只能在本文件中使用
3. 防止多文件全局变量函数重名
原理
1. 静态变量未经初始化值为0
2. 在编译时为静态变量分配内存空间
3. 程序执行结束后,回收静态变量空间
注意: 一个c语言程序,先编译,再运行,auto int a的内存空间是程序运行时候在栈区开辟的,static int c是程序运行之前编译时候已经被挑出来在数据区开辟空间
5. 全局变量(存储在数据区)
2.4 变量的定义
存储类型 数据类型 变量名;(存储类型默认auto)
3. 函数的传参
3.1 值传递
3.2 全局变量传递
3.3 整形数组传递
int a[5] = {1, 2, 3, 4, 5};
int fun(int array[], int len);