1、函数本章重点:函数的定义和调用;函数间的数据传递方式;嵌套调用和递归调用;变量的作用域和存储类别;模块化程序设计方法。本章难点:形参与实参的意义、作用与区别;参数的两种传递方式;对递归函数调用过程的理解;全局变量和局部变量的作用。/函数相关内容:*语法:包括定义,声明,调用,*语义语句包括:表达式语句,空语句,控制语句,复合语句,函数调用语句函数:* 函数首部:包括返回值类型,函数名,形参*函数体*函数调用的过程:*开辟空间(形参,函数的局部变量)*把实参送给形参*执行函数*释放空间1.函数其实就是一段可以重复调用的、功能相对独立完整的程序段。2.主函数可以调用其他函数,其他函数也可以互相调用
2、。3.一个 C 程序必须有一个且只能有一个 main 函数,无论 main函数位于程序的什么位置,运行时都是从 main 函数开始执行的。4.函数不能嵌套定义,也就是说一个函数不能从属于另一个函数。函数之间可以互相调用,但是任何函数不能调用 main 函数,main 函数是被操作系统调用的。5.函数的分类:(1)从用户角度看:库函数、用户自定义的函数(2)从形式:无参函数、有参函数6.函数定义即函数的实现,是对所要完成功能的操作进行描述的过程,包 括函数命名和返回值类型声明、形式参数的类型说明、变量说明和一系 列操作语句等。函数和变量一样,必须“先定义,后使用”7.函数定义应包括以下内容:函数
3、的名字、返回值的类型。函数参数的类型和名字,无参函数不需要 指定。指定函数的功能8.在函数体中,声明部分是对函数内部所用到的变量的类型说明,并对要调用的函数进行声明。9。定义有参函数的一般形式为:类型标识符 函数名(形式参数表列)声明部分;语句;10.在 C 语言中,可以用以下几种方式调用函数(1)函数表达式函数作为表达式中的一项出现在表达式中,以函数返回值参与表达式 的运算。这时要求函数是有返回值的。例如:y=sin(x);(2)函数语句函数调用的一般形式加上分号即构成函数语句。例如:printf(“%d“,a);这种方式通常只要求函数完成一定的操作,不要求函数带回值。(3)函数实参这种方式
4、是函数作为另一个函数调用的实际参数出现,也就是把该函 数的返回值作为实参进行数据传送,所以要求该函数必须是有返回值 的。例如:printf(“%d“,max(a,b);11.实参 :可以是常量、变量和表达式。12.只有在发生函数调用时,才给形参分配单元,并且赋值,一旦函数调 用结束后,形参所占的内存单元又被释放掉。13.在调用函数过程中发生的实参与形参间的数据传递是“值传递” ,只 能由实参向形参传递数据,是单向传递,不能由形参传给实参。14.声明的作用是把函数的返回值类型、函数名、函数参数的个数和类型 等信息通知编译系统,以便在遇到函数调用时,编译系统能识别该函 数并检查调用是否合法15.函
5、数的声明方法:(1)只说明函数的类型,这称为简单声明。int min() ;(2)不仅说明函数的类型还要说明参数的个数和类型,这称为原型声明。int min(int x,int y);16.数组名作函数参数时, 形参数组和实参数组为同一数组,共同拥有一段 内存空间。17.数组元素不能用作形参,因为形参是在函数调用时临时分配内存存储 单元的,不能为一个数组元素单独分配存储单元。18.变量的有效范围(作用域)19.局部变量也称为内部变量,是在函数内或函数的复合语句内定义说明的。20.全局变量也称为外部变量,它是在函数外部定义的变量,位置在所有函数前、各个函数之间或所有函数后。*其作用域是从定义变量
6、的位置开始到本源文件结束。*设置全局变量的作用是可以增加各个函数之间的数据传输渠道。21.变量的完整说明为:存储类型 数据类型 变量名表列;例如:auto int x,y;22.C 语言变量的存储方式可以分为动态存储方式和静态存储方式。23.动态存储方式:(1)自动变量(auto 变量)(2)寄存器变量(register 变量)(3)形式参数24.静态存储方式:(1)静态局部变量(static 局部变量)其语法格式为:static 类型标识符 变量名;例如:static int f;(2)全局变量(全局变量赋初值也是在编译时完成的,且仅执行一次赋初值 的操作。)不能用 extern 来初始化外部变量。(3)静态外部变量25.一般为了叙述方便,把建立存储空间的变量声明称定义,而把不需要 建立存储空间的声明称为声明26.在函数中出现的对变量的声明(除了用 extern 声明的以外)都是定义。例如:extern int x=25; /错误*外部变量