People Lack Willpower,Rather Than Strength!
可以说C程序的全部工作都是由各式各样的函数完成的,所以也把C语言称为函数式语言.
C源程序是由函数组成的。
函数分类:
-
1.从函数定义的角度看,函数可分为库函数和用户定义函数两种。
-
2.C语言的函数兼有其它语言中的函数(有)和过程(无)两种功能,从这个角度看,又可把函数分为有返回值函数和无返回值函数两种。
-
3.从主调函数和被调函数之间数据传送的角度看又可分为无参函数和有参函数两种。
-
4.库函数分类:
- 字符类型分类函数:用于对字符按ASCII码分类:字母,数字,控制字符,分隔符,大小 写字母等。
- 转换函数:用于字符或字符串的转换;在字符量和各类数字量(整型,实型等)之间进行 转换;在大、小写之间进行转换。
- 目录路径函数:用于文件目录和路径操作。
- 诊断函数:用于内部错误检测。
- 图形函数:用于屏幕管理和各种图形功能。
- 输入输出函数:用于完成输入输出功能。
- 接口函数:用于与DOS,BIOS和硬件的接口。
- 字符串函数:用于字符串操作和处理。
- 内存管理函数:用于内存管理。
- 数学函数:用于数学函数计算。
- 日期和时间函数:用于日期,时间转换操作。
- 进程控制函数:用于进程管理和控制。
-
5.在C语言中,所有的函数定义,包括主函数main在内,都是平行的。即不能嵌套定义。但是函数之间允许相互调用,也允许嵌套调用。
-
6.一个C源程序,有且只有一个main函数,同时这个main函数既是程序入口也是出口!
-
7.函数的目的:1.将功能封住,方便以后调用;2.防止代码重构;
-
8.内存:形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数没被调用时也不会分配空间。
-
9.实参:可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。
-
10.形参实参类型不一致,会自动转换为形参类型!! ⭐️
-
11.如果被调函数的返回值是整型时,可以不对被调函数作声明,而直接调用。⭐️
-
12.函数表达式/函数实参:函数作为表达式中的一项出现在表达式中, 或函数作为另一个函数调用的实际参数出现 ,此时函数返回值参与运算.
-
13.递归函数:一个函数在它的函数体内调用它自身称为递归调用。每调用一次就进入新的
一层
。- 递归函数构成条件:
- 自己调用自己----要开辟很多内存空间,性能差
- 存在一个条件能够让递归结束----否则死循环
- 问题的规模能够缩小
- 递归函数构成条件:
-
14.#include 指令不仅仅限于.h头文件,可以包含任何编译器能识别的代码文件.
-
15.在以下场景中会使用头文件:
- 通过头文件来调用库功能。
- 在很多场合,源代码不便(或不准)向用户公布,只要向用户供头文件和二进制的库即
可。用户只需要按照头文件中的接口声明来调用库功 能,而不必关心接口怎么实现的。
- 在很多场合,源代码不便(或不准)向用户公布,只要向用户供头文件和二进制的库即
- 多文件编译。
- 将稍大的项目分成几个文件实现,通过头文件将其他文件的函数声明引入到当前文件。
- 头文件能加强类型安全检查。
- 如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担
- 通过头文件来调用库功能。
-
16.多文件开发的注意事项
- 1)头文件中可以和C程序一样引用其它头文件,可以写预处理块,但不要写具体的语句。 - 2)可以声明函数, 但不可以定义函数 - 3)可以声明常量, 当不可以定义变量 - 4)可以“定义”一个宏函数。注意:宏函数很象函数,但却不是函数。其实还是一个申明。 - 5)结构的定义、自定义数据类型一般也放在头文件中。 - 6)多文件编程时,只能有一个文件包含 main() 函数,因为一个工程只能有一个入口函数。我们 把包含 main() 函数的文件称为主文件。 - 7)为了更好的组织各个文件,一般情况下一个 .c 文件对应一个 .h 文件,并且文件名要相同, 例如 fun.c 和 fun.h。 - 8)头文件要遵守幂等性原则,即可以多次包含相同的头文件,但效果与只包含一次相同。 - 9)防止重复包含的措施-----条件编译
网友评论