[小学教育]C语言课件 chap6函数与宏定义.pptVIP

  • 1
  • 0
  • 约9.22千字
  • 约 40页
  • 2018-02-28 发布于浙江
  • 举报

[小学教育]C语言课件 chap6函数与宏定义.ppt

[小学教育]C语言课件 chap6函数与宏定义

第 6 章 函数与宏定义 6.1 函数概念 6.2 函数定义的一般形式 6.3 函数参数和函数的值 6.4 函数的调用 6.5 函数的嵌套调用 6.6 函数的递归调用 6.7 局部变量和全局变量 6.8 动态存储变量与静态存储变量 6.9 内部函数和外部函数 6.10 编译预处理 6.11 “文件包含” 处理 6.12 条件编译 6.1 函数概念 3.“ 空函数 ” ? 形参变量在被调用前不占用存储单元;在被调用结束后,形参所占存储单元亦被释放。 ? 实参可以是常量、变量或表达式。 ? 必须指定形参类型,且必须与实参的类型一致。 ? 实参对形参的数据传递是“值传递”。即单向传递,不能逆传。 ? 可以在形参表中直接说明形参类型。如: int max(int x, int y); float fun(int a[10], int n); ? 函数的返回值是通过return语句获得的。当不需返回函数值时,可省去return语句。 ? return语句的后面可以有括号,也可以没有。如: return z ; ? return(z); ? return语句的后面可以是变量,也可以是表达式。如: return(x y ? x : y); ? return语句返回值的类型应与该函数的返回值类型一致。否则以函数返回值 类型为准。 1.函数调用的一般形式 函数名(实参表); 说明: ? 对于无参函数,尽管没有“实参表”,但也不得省略括号。 ? “实参表”中的参数之间用逗号分开。 ? 实参与形参之间的个数及类型必须一一对应。 ? 对实参求值的顺序是自左至右还是自右至左, 视具体的系统而定。标准C 是按自右至左的顺序求值。 调用函数,可以有如下三种方式: ? 将函数调用作为一个语句。如: printf(“MS C pragramming”); gets(s); ? 将被调用的函数写在表达式中。如: c=2?max(a, b); 注意:被调用函数max必须有确定的返回值。 ? 将函数调用作为一个函数的实参。如: m=max(max(a, b), c); 3.对被调用函数的说明 在一个函数中调用另一个函数时: ? 如果被调函数为库函数,则应在文件开头用“#include”命令声明相应的“头文件”。如: #include “stdio.h” #include “math.h” 类型标识符 被调函数名( ); 如:float add( ); ? 如果被调函数为自定义函数且其定义在主调函数定义之前,则在主调函数中可不必声明其类型。因为编译程序已知道其类型。 ? 如果被调函数的值是整型或字符型,可不必声明类型,系统自动按整型说明。 ? 如果在所有被调函数定义之前、在文件的开头、在函数的外部已对被调函数作了类型说明,则在各主调函数中可不必说明其类型。如: char letter( ); float f( ); int i( );? main( ) {……} /? 不必说明它所调用的函数的类型 ?/ C 语言函数的定义都是相互平行、独立的,不能嵌套定义。但可以嵌套调用函数。所谓函数的嵌套调用就是在被调用的函数中又调用另外的函数。 6.6 函数的递归调用 在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。 例6.4 有5人排成一队,从最后一人开始,其年龄均比前面的人大2岁,而最前面的人年龄是10岁,问最后一人的年龄是多少岁? 1.局部变量 在一个函数内部定义的变量,只能在本函数内使用和有效,称为“局部变量”。 ?主函数main中定义的变量,也只能在主函数内使用和有效。 ?不同函数中可以使用相同名字的变量,且互不干扰。 ?形式参数也是局部变量,也只能在所在函数内使用和有效。 ?可以在一个函数内的复合语句中定义变量,且这些变量只在本复合语句中有效。 这种复合语句也称为“分程序”或“子模块”。 2.全局变量 在函数(包括main函数)外定义的变量为外部变量,称为“全局变量”。全局变量的有效范围为从定义变量的位置开始到本源文件结束。 ? 如无必要,不要使用全局变量。因为全局变量既降低程序的清晰性和函数的通用性,且又在程序的全部执行过程中都占用存储空间。 ? 在文件开头定义的外部变量才可在整个文件范围内使用,若在定义点之前的函数需引用外部变量,则可用关键字“extern”作“外部变量说明”。 注意:外部变量定义和外部变量说明并不是同一回事。外部变量的定义只能有一

文档评论(0)

1亿VIP精品文档

相关文档