文章目录
🌿前言:在我看来,书应该越读越薄的,所以我的笔记尽量记录了每一个点,可供复习与查阅,但没有详细的解释。我的C语言的笔记是在谭浩强老师的C程序设计(第五版)的基础上总结归纳的,结合了一些我自己的见解。如果是有其他见解 ,也欢迎大家提出。
一、函数
1.无参函数
一般用来执行指定的一组操作
在调用无参函数时,主调函数不向被调用函数传递数据
一般不带回函数值
2.有参函数
在调用函数时,主调函数在调用被调用函数时,通过参数向被调用函数传递数据
一般情况下,执行被调用函数时会得到一个函数,供主调函数使用
二、函数的定义
1.定义无参函数
(1)
类型名 函数名()
{
函数体
}
(2)
类型名 函数名(void)
{
函数体
}
2.定义有参函数
类型名 函数名(形参表列)
{
函数体
}
3.定义空函数
三、调用函数
1.函数调用的一般形式
函数名(实参表列)
2.函数调用时的数据传递
(1)实参与形参
形式参数(虚拟参数):在定义函数时函数名后面括号中的变量
实际参数:在主调函数中调用一个函数时,函数名后面括号里的变量
(2)形参与实参间的数据传递
3.函数的返回值
(1)函数的返回值是通过函数中的return语句获得的
(2)函数值的类型
int max(float x,float y); //函数值为整型
(3)在定义函数时指定的函数类型一般应该和return语句中的表达式类型一致,即函数类型决定返回值类型
四、对被调用函数的声明和函数原型
1.在一个函数中调用另函数的条件
(1)已经定义
(2)如果使用的是库函数,应该在本文件开头用#include指令将调用有关库函数时所需用到的信息包含到本文件中来
(3)如果使用的是用户自己定义的函数,而该函数的位置在调用它的函数(即主调函数)后面(同一文件中),应该在主调函数中对被调函数做声明(照抄定义再加一个分号即可)
2.函数的声明
(1)函数类型 函数名(参数类型1 参数名1,参数类型2 参数名2,…,参数类型n 参数名n);
(2)函数类型 函数名(参数类型1,参数类型2,…,参数类型n);
五、函数的嵌套调用
六、函数的递归调用
七、数组作为函数参数
1.数组可作为实参,不能用作形参
2.用数组名作函数参数,应该在主调函数和被调函数中分别定义数组,且数组类型应一致
3.多维数组作为形参数组,一定要指定第二维的长度
八、局部变量与全局变量
1.局部变量
在函数内定义的变量
(1)形参也是局部变量
(2)在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效,这种复合语句也称为分程序或程序块
2.全局变量
在函数之外定义的变量
· 全局变量在程序的全部执行过程中都占存储单元
九、变量的存储方式和生存期
1.存储方式
(1)动态存储方式:在程序运行期间根据需要进行动态的分配存储空间的方式
如 形参 自动变量
(2)静态存储方式:在程序运行期间由系统分配固定的存储空间的方式
如 全局变量
2.局部变量的存储类别
(1)自动变量(auto变量)
动态存储区
(2)静态局部变量(static局部变量)
静态存储区
PS:定义局部变量时不赋初值,静态局部变量会自动赋0(数值型变量)或‘\0’(字符变量),自动变量的值会不确定
(3)寄存器变量(register变量)
cpu的寄存器
3.全局变量的存储类别
extren:(外部变量)
(1)在一个文件内扩展外部变量的作用域
(如果外部变量不在开头处定义,作用域只在定义处到文件结束)
(用其声明外部变量时,类型名可省)
(2)将外部变量的作用域扩展到其他文件
static:(静态外部变量)
将外部变量的作用域限制在本文件中
4.小结
动态存储:自动变量 、寄存器变量 、形参
静态存储:静态局部变量、静态外部变量、外部变量
十、关于变量的声明和定义
建立存储空间的声明称为定义
不需要建立存储空间的声明称为声明
十一、内部函数与外部函数
1.内部函数(只能被本文件中的其他函数所调用 局限 静态函数)
在定义函数时,前面加static
2.外部函数(可供其他文件调用)
在定义函数时,前面加extern
(声明时前加extern,代表该函数是在其他文件中定义的外部函数)