1
C语言程序设计
1.7.11 小 结 六

小 结 六

1.函数是C语言程序中最重要的结构,它是支持程序设计中的模块和层次结构的基础。

2.C语言中的函数定义就是编写完成某种功能的程序模块。函数中包括三个部分:函数头、参数说明和函数体。函数头中的数据类型定义符定义了函数返回值的数据类型;函数名是为函数定义的名字,它是调用函数的标识符;形式参数表中的形参变量用于接收调用函数传递的实参变量。参数说明是对形参表中形参变量的说明,调用函数时实参必须与形参的数据类型相同,其顺序必须一一对应。函数体是完成某种功能的语句集合。

3.函数调用是将实参传递给被调函数形参,然后执行函数体的过程。函数返回语句结束函数的执行并将控制返回到调用处。函数的返回值能在表达式中作为操作数。

4.数据在函数间传递可采用四种方式,即传值、传址、利用返回值、利用外部变量。传值方式是采用复制方式把实参的值传递给形参,它们各自占用独立的存储空间,形参的任何改变不影响实参。传址方式是将实参的地址传递给形参,为此,接收地址的形参必须被说明成指针变量,指针形参的任何改变实质上就是对指针指向的实参的改变。利用函数return语句可以返回函数处理数据的结果,以及各函数都可以对外部变量进行访问的特点,可以在函数间实现数据的传递。使用外部变量的方式将在下章中介绍。

5.函数与数组就是当数组作为实参传递时,利用不带下标的数组名将数组的首地址传递给函数,被调函数用指针变量接收这个地址之后,利用指针与数组元素建立的对应关系,可以对数组进行处理。实质上这是传址方式调用的扩展,函数中的传址方式调用是指针应用的一个重要方面。

6.返回值为指针的函数简称为指针型函数,指针型函数与一般函数定义方式不同之处仅在于,为了表示函数的返回值不是数值而是指向数值的指针,必须在函数名前加一个“*”号。程序中接收指针型函数返回值的变量必须说明为指向同种数据类型的指针变量。

7.指向函数的指针简称为函数指针,定义函数指针与一般指针的形式不同,应注意其区别。其定义形式是:

  类型定义符 (*函数指针变量)();

函数指针的作用是函数调用时在函数之间传递函数,它是通过将实参函数的起始地址传递到函数指针实现的。

8.递归函数就是函数直接或间接地调用自己。递归总是有条件的,无终止条件的递归是无意义的。递归函数是采用堆栈机制实现的,递归函数源程序代码紧凑,但它并不能节省内存空间和提高速度。

9.命令行参数是把可执行的C语言程序作为操作系统命令一样使用的一种方法。使用命令行参数可以实现对main()函数传递参数。main()中一般有两个规定的形参变量,argc表示命令行中参数个数(包括命令名本身),argv[]是一个指向命令名和命令行中各实参字符串常量的指针数组。在编写使用命令行参数的程序中,必须使用这两个规定的形参变量,否则无法实现参数的传递。

10.与用户自定义的函数不同,标准库函数是C编译程序为用户预先编写的具有特定功能的一系列函数。这类函数以程序库方式提供使用,在编写C语言程序时可直接调用。为了使用库函数,必须在程序中嵌入一个特定的“头部文件”,该文件包含有被调用函数需要的定义和说明、参数常量及宏等,