函数是什么
是一个工具,为了解决大量类似问题而设计的一串代码,以函数之名,对数据用那一串代码来进行处理,最终将结果返回
如何定义函数
- 基本语法
函数的返回值类型 函数的名字(函数的形参列表) { 函数的执行体 }
- Tips
- 执行体:详细描述函数之所以能够实现某个特定功能的具体步骤
- 函数内部定义的变量只能在函数内部使用
- 一个函数的功能尽量独立,单一 → 可重用性高
return 表达式
- 作用:终止被调函数,向主调函数返回表达式的值
- 2 种情况
- 如果函数的返回类型是 void:return;
- 返回类型是 !void:return 表达式;
- 如果 "return 表达式" 和 "函数声名的返回值类型" 不同,最终函数返回值的类型以函数名前的返回值类型为准
- return 和 break 的区别
- return:终止 被调函数
- break:终止 for/which/switch
主函数
- 一个程序必须有且只有一个"主函数",主函数可以调用普通函数
- 普通函数不能调用主函数,因为 main 函数形参没有规模递减这一说,所以无法实现递归,因为无法实现递归,所以其他函数不能调用 main 函数
- 普通函数之间可以相互调用
- 主函数是程序的入口,也是程序的出口
函数的声明
- 作用
- 如果函数定义在 main 函数之后,则在执行 main 函数时,若函数体中调用自定义函数的时候,程序会报错
- 在 main 函数定义之前,函数声名可以告诉编译器在 main 函数中出现的
xxx (xxx)
代表的是函数 - 告诉编译器即将出现的若干字母所代表的函数的形参和返回值的具体情况
- 对库函数的声明是通过
#include<库函数所在的文件的名字.h>
来实现
- 函数声明中,形参可以只写形参数据类型,不写形参名。如:
void f(int);
形参和实参
- 形参
- 出现在函数定义中
- 是在定义函数名和函数体的时候使用的参数,用来接收调用该函数时传递过来的数据
- 实参
- 出现在主调函数中
- 在发生函数调用时,主调函数把实参的值传递给被调函数的形参从而实现主调函数向被调函数的数据传送
变量的作用域
按作用域分
- 全局变量
- 概述:在所有函数外部定义的变量叫做"全局变量"
- 作用范围:在其定义语句直到程序末尾
- 局部变量
- 概述:在一个函数内部定义的变量或函数的形参都统称为"局部变量"
- 作用范围:只能在本函数内部使用
全局变量和局部变量命名冲突的问题:
在一个函数内部如果定义的局部变量的名字和全局变量名一样时,局部变量会屏蔽掉全局变量。
按存储方式分
- 静态变量
- 自动变量
- 寄存器变量