函数
来源:互联网 发布:软件项目技术质量指标 编辑:程序博客网 时间:2024/04/20 12:07
9.1函数概述
函数是用于完成特定任务的程序代码的自包含单元。1.导致执行某些动作。2.返回一个值以供使用。
函数包括函数原型、函数调用和函数定义。
函数原型声明函数类型;调用前要声明,函数定义通常放在最后。
9.1.1函数参数
函数原型中定义的参数是形式参数,是局部变量,是函数私有的,不同的函数可以定义相同的函数名。
9.1.2带参数函数原型声明
9.1.3调用带有参数的函数:实际参数
形式参数是被调函数中的变量,而实际参数是调用函数分配给被调函数变量的特定数值。
因为只是值的复制,所以不管在被调函数中进行什么操作,调用函数中的原数值不会受到任何影响。
9.1.4使用return从函数中返回一个值
9.1.5函数类型
函数类型应和返回值类型相同。无返回值的函数应该被声明为void类型。早期函数不声明类型会默认为int,C99不
再支持这种形式。ANSI要求在函数声明中说明参数类型。
9.1.6无参数和不确定参数
ANSI C要求没有参数时使用void,还可以用省略号表示参数个数是不定的。
9.2递归
C允许一个函数调用其本身,这种调用过程被称作递归。必须设定终止递归的条件检测,否则会无限制进行递归。
递归有时可替代循环,但效率不如循环高。
9.2.3尾递归
把递归调用语句放在函数结尾即恰在return语句之前,称为尾递归。
9.2.4递归和反向计算
处理一个十进制转二进制的问题。
递归的优点是对于某些问题提供了简单的解决办法,缺点消耗内存很快。
9.3多源代码文件程序的编译
(1)Unix下
cc file1.c file2.c把两个文件编译到一起生成一个可执行文件,如果改变了1个,可以用cc file1.c file2.c链接到第二个目标代码。
(2)Linux下
与Unix一样,编译器是gcc
(3)DOS下
与Unix一样,不过目标文件是.obj
(4)Windows下
把多个文件加到一个工程下
9.4头文件的使用
如果main函数在一个文件中,函数在另一个文件中,这时把函数声明放在头文件中,在main中就不用声明函数原型了,直接include头文件即可。
9.5地址运算符:&
普通的函数调用实参传递给行参的只是数值,不能影响到实参的改变。
指针是一个其数值为地址的变量。指针变量的数值表示的是地址。
间接运算符*,取该地址中的值。&表示取某个变量的地址。
指针声明:类型 * 指针名
指针输出格式:%p