C语言笔记——第5章 函数

🌿前言:在我看来,书应该越读越薄的,所以我的笔记尽量记录了每一个点,可供复习与查阅,但没有详细的解释。我的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,代表该函数是在其他文件中定义的外部函数)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值