我说不出爱你的理由, 但我知道, 你就是我不爱别人的理由! – 宫崎骏
目录
编程语言 | C | 6. 函数
6.1 函数的定义和组成
6.1.1 定义
- 维基百科定义:在计算机科学中,子程序, 是一个大型程序中的某部分代码, 由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代 码,具备相对的独立性。
- 一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏。
6.1.2 组成
6.2 C语言中函数的分类
6.2.1库函数
- C语言基础库中提供了一系列类似的库函数,方便程序员进行软件开发。
- C语言常用的库函数:IO函数、字符串操作函数、内存操作函数、时间/日期函数、数学函数、其他库函数。
- 使用库函数,必须得包括对应的头文件。
- 官方文档:http://www.cplusplus.com
6.2.2 自定义函数
- 程序员自己定义的函数,也包括返回值,函数名,函数参数。
6.3 函数的声明和定义
6.3.1 声明
- 告诉编译器函数返回值类型(具体是否存在,无关紧要)、函数名以及函数参数。
- 一般出现在函数使用之前,要满足先声明后使用。
- 一般放置在头文件中,定义放置在.c或者.cpp文件中。
6.3.2 定义
- 指函数的具体实现,一般交代函数的功能。
6.4 函数的调用
6.4.1 函数的调用分类
(1) 传值调用
- 传值调用是把函数外部创建变量的内存地址传送给函数参数的一种调用函数方式。
- 函数形参和实参分别占有不同的内存块,对形参的修改不会影响实参。
(2) 传地址调用
(3) 嵌套调用
- 函数调用函数。
(4) 链接访问
6.4.2 函数的调用过程
6.5 函数的链接属性
6.5.1 外部链接属性
6.5.2 内部链接属性
6.5.3 无链接属性
6.6 函数的参数
6.6.1 函数的实参 (实际参数)
- 真实传递给函数的参数叫实参。
- 实参可以是:常量、变量、表达式、函数等。无论实参是何种类型的量,在进行函数调用时,他们都必须有确定的值,以便把这些值传递给形参。
6.6.2 函数的形参 (形式参数)
- 形式参数:指函数名后面括号中的变量,因为形式参数只有在被函数调用的过程中才实例化(分配内存单元),所以形式参数当在函数调用完成后就自动销毁了,因此形式参数只在函数中有效。
6.7 回调函数
- 回调函数就是一个通过函数指针调用的函数。
- 当你把函数的指针(地址)作为参数传递给另外一个函数,当这个指针被用来调用其他所指向的函数时,我们称其为回调函数。
- 回调函数不是由该函数的实现 方式直接调用,而是在特定的时间或条件发生时由另外的一方调用的,用于对时间或条件进行响应。