文档介绍:第六章
函数
C语言程序设计与数据结构
总体要求:
掌握自定义函数的一般结构及定义函数的方法;
掌握形参、实参、函数原型等重要概念;
掌握函数声明、函数调用的一般方法;
了解局部变量、全局变量的概念;
掌握auto型和static型局部变量的特点和用法。
C语言程序设计与数据结构
学习重点:
区分函数定义、函数说明的区别;
理解参数传递的意义。
C语言程序设计与数据结构
在高级语言程序设计中往往将一个较大的程序分解成若干较小的、功能单一的程序模块来完成特定的功能,称其为子程序。通过对这些子功能的组织和调用,来实现整个程序的功能要求。C语言中,这些功能比较独立的子程序成为函数。函数是C语言程序的一种基本组成部分,C语言程序的功能是通过函数之间的调用来实现的,一个完整的C语言程序可由一个或多个函数组成,每个函数都有一个函数名。
C语言程序设计与数据结构
为什么使用函数?
第一,使用函数可以省去写重复代码。如果程序中要多次使用某种特定的功能,那么只需编写一个合适的函数即可。程序可以在任何需要的位置调用该函数,并且同一个函数可以在不同的程序中调用,就像在很多程序中使用printf()函数一样。
第二,即使某种功能在程序中只使用一次,将其以函数的形式来实现也是必要的,因为函数使得程序更加模块化,从而有利于程序的阅读、修改和完善。
C语言程序设计与数据结构
C语言函数设计的一般原则为:
(1)界面清晰。函数的处理任务明确,函数之间数据传递越少越好。
(2)大小适中。函数太大,处理任务复杂,导致结构复杂,程序可读性差;反之,若函数太小,则程序调用关系复杂,这样会降低程序的效率。
C语言程序设计与数据结构
在C语言中,从用户使用的角度看,函数可分为库函数和用户自定义函数两种。
C语言提供了极为丰富的库函数,如前几章例题中反复用到的scanf()、printf()、getchar()等函数均属于库函数。这类函数是由系统提供并定义好的,不必用户再去定义,用户只需掌握函数的功能,并学会正确调用这些函数即可,至于函数内部是如何实现这些功能的,用户不必知道。但是,仅有C语言的库函数在实际编程中往往是不够用的,这就需要用户按需要定义和编写自己的函数来解决某些问题。
C语言程序设计与数据结构
事实上,一个具备一定规模C程序往往由多个函数组成。其中必有一个名为main的主函数,由main来调用其他函数。必要的话,其他函数还可以调用另外的函数。同一个函数可以被多个函数调用一次或者多次。
从总的框架来看,是将一个大的计算任务划分为一个一个小的任务,这些小的任务均由函数来完成。而函数既可以是C的标准库函数,也可以是用户自定义函数。
注意:函数必须先定义,后调用。
C语言程序设计与数据结构
从函数定义的角度看,函数可分为库函数和用户定义函数两种
C语言的函数兼有其它语言中的函数和过程两种功能,从这个角度看,又可把函数分为有返回值函数和无返回值函数两种。
从主调函数和被调函数之间数据传送的角度看又可分为无参函数和有参函数两种。
C语言提供了极为丰富的库函数
C语言程序设计与数据结构
还应该指出的是,在C语言中,所有的函数定义,包括主函数main在内,都是平行的。
也就是说,在一个函数的函数体内,不能再定义另一个函数,即不能嵌套定义。但是函数之间允许相互调用,也允许嵌套调用。习惯上把调用者称为主调函数。函数还可以自己调用自己,称为递归调用。main 函数是主函数,它可以调用其它函数,而不允许被其它函数调用。
因此,C程序的执行总是从main函数开始,完成对其它函数的调用后再返回到main函数,最后由main函数结束整个程序。一个C源程序必须有,也只能有一个主函数main。
C语言程序设计与数据结构