1. 函数的概念
2. 库函数
3. ⾃定义函数
4. 形参和实参
5. return语句
6. 数组做函数参数
7. 嵌套调⽤和链式访问
8. 函数的声明和定义
1. 函数的概念
C语⾔中的函数就是⼀个完成某项特定的任务的⼀⼩段代码,这段代码是有特殊的写法和调⽤⽅法的。 C语⾔的程序其实是由⽆数个⼩的函数组合⽽成的。
2. 库函数
2.1标准库和头⽂件
我们前⾯内容中学到的 printf 、 scanf 都是库函数,库函数的也是函数,不过这些函数已经是现 成的,我们只要学会就能直接使⽤了。有了库函数,⼀些常⻅的功能就不需要程序员⾃⼰实现了,⼀ 定程度提升了效率;
库函数相关头⽂件:https://zh.cppreference.com/w/c/header
2.2库函数使用方法
2.2.1功能
Computesquareroot计算平⽅根
Returns the square root of x.(返回平⽅根)
2.2.2 头⽂件包含
库函数是在标准库中对应的头⽂件中声明的,所以库函数的使⽤,务必包含对应的头⽂件,不包含是可能会出现⼀些问题的
3.自定义函数
3.1函数语法形式
int是返回类型
fun_name是函数名
( )中放的是形式参数
{ }括起来的是函数体
举例:
4. 形参和实参
4.1 实参
实际参数就是真实传递给函数的参数
例如上方 174-179行是 Add 函数的定义,有了函数后,再第188⾏调⽤Add函数的。 我们把第188⾏调⽤Add函数时,传递给函数的参数a和b,称为实际参数,简称实参。
4.2 形参
在上⾯代码中,第174⾏定义函数的时候,在函数名 Add 后的括号中写的 x 和 y ,称为形式参数,简称形参
4.3 实参和形参的关系
0
x和y确实得到了a和b的值,但是x和y的地址和a和b的地址是不⼀样的,所 以我们可以理解为
形参是实参的⼀份临时拷⻉
5.return 语句
1.return后边可以是⼀个数值,也可以是⼀个表达式,如果是表达式则先执⾏表达式,再返回表达式 的结果。
2.return后边也可以什么都没有,直接写 return; 这种写法适合函数返回类型是void的情况。
3.return返回的值和函数返回类型不⼀致,系统会⾃动将返回的值隐式转换为函数的返回类型。
4.return语句执⾏后,函数就彻底返回,后边的代码不再执⾏。
5.如果函数中存在if等分⽀的语句,则要保证每种情况下都有return返回,否则会出现编译错误
6. 数组做函数参数
举例 将一个数组里的数全部变成-1
知识点:
1.函数的形式参数要和函数的实参个数匹配
2.函数的实参是数组,形参也是可以写成数组形式的
3.形参如果是⼀维数组,数组⼤⼩可以省略不写
4.形参如果是⼆维数组,⾏可以省略,但是列不能省略
5.数组传参,形参是不会创建新的数组的
6.形参操作的数组和实参的数组是同⼀个数组
7.嵌套调⽤和链式访问
7.1 嵌套调⽤
计算某年某⽉有多少天
main 函数调⽤ scanf , printf ,get_days_of_month
get_days_of_month函数调⽤ is_leap_year
7.2 链式访问
含义:所谓链式访问就是将⼀个函数的返回值作为另外⼀个函数的参数,像链条⼀样将函数串起来就是函数 的链式访问。
举例:
改写成
就是链式访问
8. 函数的声明和定义
8.1单个文件
上⾯代码中橙⾊的部分是函数的定义,绿⾊的部分是函数的调⽤。
如果把函数的定义放下面 编辑器会报错。
函数的调⽤⼀定要注意,先声明后使⽤
函数的定义也是⼀种特殊的声明,所以如果函数定义放在调⽤之前也是可以的
8.2 多个⽂件
⼀般情况下,函数的声明、类型的声明放在头⽂件(.h)中,函数的实现是放在源⽂件(.c)⽂件中
8.3 static和extern
static 是 静态的的意思,可以⽤来:
1.修饰局部变量
2.修饰全局变量
3.修饰函数
extern 是⽤来声明外部符号的
作⽤域(scope)是程序设计概念,通常来说,⼀段程序代码中所⽤到的名字并不总是有效(可⽤) 的,⽽限定这个名字的可⽤性的代码范围就是这个名字的作⽤域。
1. 局部变量的作⽤域是变量所在的局部范围。
2. 全局变量的作⽤域是整个⼯程(项⽬)
⽣命周期指的是变量的创建(申请内存)到变量的销毁(收回内存)之间的⼀个时间段。
1. 局部变量的⽣命周期是:进⼊作⽤域变量创建,⽣命周期开始,出作⽤域⽣命周期结束。
2. 全局变量的⽣命周期是:整个程序的⽣命周期。
8.3.1 static 修饰局部变量:
举例
对比结果发现
static修饰局部变量改变了变量的⽣命周期,⽣命周期改变的本质是改变了变量的存储类型,本 来⼀个局部变量是存储在内存的栈区的,但是被 static 修饰后存储到了静态区。存储在静态区的变量和全局变量是⼀样的,⽣命周期就和程序的⽣命周期⼀样了,只有程序结束,变量才销毁,内存才 回收。但是作⽤域不变的
8.3.2 static修饰全局变量
⼀个全局变量被static修饰,使得这个全局变量只能在本源⽂件内使⽤,不能在其他源⽂件内使⽤
8.3.3static 修饰函数
static 修饰函数和 static 修饰全局变量是⼀模⼀样的,⼀个函数在整个⼯程都可以使⽤.
标签:函数,形参,static,数组,讲解,实参,库函数 From: https://blog.csdn.net/qq_74775863/article/details/140631397