C语言学习笔记-7.函数
一、函数的使用
1.每个函数在使用之前必须先定义
例:void function(); //有分号
int main() {…}
void add() {…} //无分号
2.文件包含处理:
#include <文件名> 在库函数头文件所在目录中查找(标准方式)
#include “文件名” 先在当前工作目录中查找,若没有则使用标准方式
3.函数的调用
形参:定义一个函数时指定的参数
实参:调用一个函数时指定的参数
注:C语言规定只能由形参传给实参
二、函数变量的作用范围
1.局部变量的作用范围是它所在的整个函数(包括main函数)
形参可以视为局部变量
2.全局变量的作用范围:从定义这个变量的位置开始,至程序结束
如果在同一源文件中,全局变量与局部变量同名,则在局部变量的作用域内,全局变量将被屏蔽
3.函数的调用:
控制流:语句执行的顺序
数据流:在函数调用发生及结束时,数据在函数之间流转的过程,如参数的传递、返回
三、函数调用的实现过程
1.进程的内存分布
操作系统 代码 数据段 编译器用来存储字符串常量的地方 堆 主要用作动态申请的内存空间 栈 S1 在调用一个函数时,系统在栈空间中自动分配一块区 S2 域给这个函数,用来存放形参和局部变量等信息 …… 全局变量 2.全局变量会被初始化为0
四、数组与函数参数
1.函数定义:double averagee(int a[], int n) {…}
函数调用:average(score, n);
注意:数据类型必须一致
由于形参数组名实质上是指针,所以定义时可以不指定大小
由于数组名不带有长度信息,因此需增加一个参数,用来传递数组的长度
五、变量的存储属性
1.存储类型:
auto(自动型) 默认局部变量,属于默认类型 register(寄存器型) 存储在CPU寄存器中,优点:效率高,缺点:个数少,只能为int型 static(静态型) 性质:全局寿命,局部可见性,可继承性 extern(外部型) 不是变量定义,只是扩展外部变量作用域(范围:变量定义位置到源文件结束,及其他有extern说明的)