《C语言程序设计(Visual C++ 6.0环境)》电子教案 第5章 函数与预处理

上传人:E**** 文档编号:89400097 上传时间:2019-05-24 格式:PPT 页数:67 大小:1.19MB
返回 下载 相关 举报
《C语言程序设计(Visual C++ 6.0环境)》电子教案 第5章 函数与预处理_第1页
第1页 / 共67页
《C语言程序设计(Visual C++ 6.0环境)》电子教案 第5章 函数与预处理_第2页
第2页 / 共67页
《C语言程序设计(Visual C++ 6.0环境)》电子教案 第5章 函数与预处理_第3页
第3页 / 共67页
《C语言程序设计(Visual C++ 6.0环境)》电子教案 第5章 函数与预处理_第4页
第4页 / 共67页
《C语言程序设计(Visual C++ 6.0环境)》电子教案 第5章 函数与预处理_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《《C语言程序设计(Visual C++ 6.0环境)》电子教案 第5章 函数与预处理》由会员分享,可在线阅读,更多相关《《C语言程序设计(Visual C++ 6.0环境)》电子教案 第5章 函数与预处理(67页珍藏版)》请在金锄头文库上搜索。

1、,本章导读 在第一章中已经介绍过,源程序是由函数组成的。 虽然在前面各章的程序中都只有一个主函数main(), 但实用程序往往由多个函数组成。函数是源程序的基本模块, 通过对函数模块的调用实现特定的功能。语言中的函数相当于其它高级语言的子程序。 语言不仅提供了极为丰富的库函数(如Turbo C,MS C 都提供了三百多个库函数),还允许用户建立自己定义的函数。用户可把自己的算法编成一个个相对独立的函数模块,然后用调用的方法来使用函数。 由于采用了函数模块式的结构, 语言易于实现结构化程序设计。使程序的层次结构清晰,便于程序的编写、阅读、调试。, C语言程序设计 (Visual C+ 6.0环境

2、),返回本书目录,第5章 函数与预处理, C语言程序设计 (Visual C+ 6.0环境),返回本书目录,第5章 函数与预处理,本章主要知识点 (1)函数应用的C程序实例 (2)函数的定义 (3) 函数调用 (4)函数的嵌套调用和递归调用 (5) 内联函数和重载函数 (6)作用域 (7)变量及函数的存储类型 (8) 编译预处理,第5章 函数与预处理, C语言程序设计 (Visual C+ 6.0环境),返回本章导读,5.2 函数的定义,5.3 函数调用,5.5内联函数和重载函数,5.4 函数的嵌套调用和递归调用,5.1 函数应用的C程序实例,5.6作用域,5.7变量及函数的存储类型,5.8编

3、译预处理, C语言程序设计 (Visual C+ 6.0环境),返回本章目录,5.1.1 函数应用的C程序实例,5.1 函数应用的C程序实例, C语言程序设计 (Visual C+ 6.0环境),返回本节目录,2. C程序实例(2),1. C程序实例(1),5.1.1 函数应用的C程序实例,5.1.1 C程序实例(1), C语言程序设计 (Visual C+ 6.0环境),返回本节目录,1.C程序实例1,【例5.1】简单的函数调用的例子 /*功能:定义两个输出函数并在主函数中调用*/ /*程序代码文件名:l5_1.cpp/ main() printst(); /* 调用 prigtst 函数

4、*/ print_ hello (); /* 调用print_hello函数*/ printst(); /* 调用 prigtst 函数 */ printst( ) / * printst 函数* / ,程序演示,5.1.1 C程序实例(1), C语言程序设计 (Visual C+ 6.0环境),返回本节目录,printf(“ * n“); print_hello( ) /* print_hello函数*/ printf(“ Hello! n“); 程序运行情况如下: * Hello! *,程序演示,例5.1程序演示,返回例题,返回本节目录,5.1.1 C程序实例(2), C语言程序设计 (V

5、isual C+ 6.0环境),2.C程序实例2,【例5.2】定义一个函数,用于求两个数中的大数。 /*程序代码文件名:l5_2cpp/ /*功能:定义一个求较大数的函数并在主函数中调用*/ int max(int n1, int n2) /*定义一个函数max()*/ return (n1n2?n1:n2); main() int max(int n1, int n2); /*函数说明*/ int num1,num2; printf(“input two numbers:n“); scanf(“%d%d“, /*使程序暂停,按任一键继续*/ 程序运行结果为: input two number

6、s: 5 6 max=6,返回本节目录,程序演示,例5.2程序演示,返回例题,返回本节目录, C语言程序设计 (Visual C+ 6.0环境),返回本章目录,5.2.2 函数原型,5.2.1 函数的定义,5.2 函数的定义,5.2.1 函数的定义, C语言程序设计 (Visual C+ 6.0环境),1.无参函数的一般形式,返回本节目录,类型说明符 函数名() 类型说明 语句 其中类型说明符和函数名称为函数头。 类型说明符指明了本函数的类型,函数的类型实际上是函数返回值的类型。 该类型说明符与第二章介绍的各种说明符相同。 函数名是由用户定义的标识符,函数名后有一个空括号,其中无参数,但括号不

7、可少。 中的内容称为函数体。在函数体中也有类型说明, 这是对函数体内部所用到的变量的类型说明。【例4.1】中的printst(),print_hello( ) 函数都是无参函数。在很多情况下都不要求无参函数有返回值,因此可以不写类型说明符。,5.2.1 函数的定义, C语言程序设计 (Visual C+ 6.0环境),2.有参函数的一般形式,类型说明符 函数名(形式参数表) 形式参数 类型说明 类型说明 语句 有参函数比无参函数多了两个内容,其一是形式参数表, 其二是形式参数类型说明。在形参表中给出的参数称为形式参数, 它们可以是各种类型的变量, 各参数之间用逗号间隔。在进行函数调用时,主调函

8、数将赋予这些形式参数实际的值。 形参既然是变量,当然必须给以类型说明。,返回本节目录,5.2.1 函数的定义, C语言程序设计 (Visual C+ 6.0环境),3.说明,(1)函数定义不允许嵌套。 在语言中,所有函数(包括主函数main())都是平行的。一个函数的定义,可以放在程序中的任意位置,主函数main()之前或之后。但在一个函数的函数体内,不能再定义另一个函数,即不能嵌套定义。 (2)空函数既无参数、函数体又为空的函数。其一般形式为: 函数类型 函数名(void) (3)在老版本C语言中,参数类型说明允许放在函数说明部分的第2行单独指定。,返回本节目录,5.2.2 函数原型, C语

9、言程序设计 (Visual C+ 6.0环境),返回本节目录,在ANSI C新标准中,采用函数原型方式,对被调用函数进行说明,其一般格式如下: 函数类型 函数名(数据类型 参数名, 数据类型 参数名2); 例如 int putlll(int x,int y,int z,int color,char *p) /*说明一个整型函数*/ char *name(void); /*说明一个字符串指什函数*/ void student(int n, char *str); /*说明一个不返回值的函数*/ float calculate(); /*说明一个浮点型函数*/ 语言同时又规定,在以下2种情况下,可

10、以省去对被调用函数的说明: 当被调用函数的函数定义出现在调用函数之前时。因为在调用之前,编译系统已经知道了被调用函数的函数类型、参数个数、类型和顺序。 如果在所有函数定义之前,在函数外部(例如文件开始处)预先对各个函数进行了说明,则在调用函数中可缺省对被调用函数的说明。 注意: 如果一个函数没有说明就被调用, 编译程序并不认为出错, 而将此函数默认为整型(int)函数。因此当一个函数返回其它类型, 又没有事先说明, 编译时将会出错。, C语言程序设计 (Visual C+ 6.0环境),返回本章目录,5.3.2 函数传值调用,5.3.1 函数调用,5.3 函数调用,5.3.3 函数返回值,5.

11、3.1 函数调用, C语言程序设计 (Visual C+ 6.0环境),函数调用的一般形式为: 函数名(实际参数表) 切记:实参的个数、类型和顺序,应该与被调用函数所要求的参数个数、类型和顺序一致,才能正确地进行数据传递。 在语言中,可以用以下几种方式调用函数: (1)函数表达式。函数作为表达式的一项,出现在表达式中,以函数返回值参与表达式的运算。这种方式要求函数是有返回值的。 (2)函数语句。C语言中的函数可以只进行某些操作而不返回函数值,这时的函数调用可作为一条独立的语句。 (3)函数实参。函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须

12、是有返回值的。,返回本节目录,5.3.1 函数调用, C语言程序设计 (Visual C+ 6.0环境),说明: (1)调用函数时,函数名称必须与具有该功能的自定义函数名称完全一致。 (2)实参在类型上按顺序与形参,必须一一对应和匹配。如果类型不匹配,C编译程序将按赋值兼容的规则进行转换。如果实参和形参的类型不赋值兼容,通常并不给出出错信息,且程序仍然继续执行,只是得不到正确的结果。 (3)如果实参表中包括多个参数,对实参的求值顺序随系统而异。有的系统按自左向右顺序求实参的值,有的系统则相反。,返回本节目录,5.3.2 函数传值调用, C语言程序设计 (Visual C+ 6.0环境),返回本

13、节目录,1.函数的参数分为形参和实参两种,作用是实现数据传送。,形参出现在函数定义中,只能在该函数体内使用。发生函数调用时,调用函数把实参的值复制1份,传送给被调用函数的形参,从而实现调用函数向被调用函数的数据传送。 【例5.3】 实参对形参的数据传递。 /*实参对形参的数据传递。*/ /*程序代码文件名:l5_3.cpp/ void main() void so(int n); /*说明函数*/ int n=100; /*定义实参n,并初始化*/,5.3.2 函数传值调用, C语言程序设计 (Visual C+ 6.0环境),返回本节目录,so(n); /*调用函数*/ printf(“n_

14、so=%dn“,n); /*输出调用后实参的值,便于进行比较*/ getch(); void so(int n) int i; printf(“n_x=%dn“,n); /*输出改变前形参的值*/ for(i=n-1; i=1; i-) n=n+i; /*改变形参的值*/ printf(“n_x=%dn“,n); /*输出改变后形参的值*/ 程序运行结果为: n_x=100 n_x=5050 n_x=100,5.3.2 函数传值调用, C语言程序设计 (Visual C+ 6.0环境),返回本节目录,说明: (1)实参可以是常量、变量、表达式、函数等。无论实参是何种类型的量,在进行函数调用时,

15、它们都必须具有确定的值,以便把这些值传送给形参。 因此,应预先用赋值、输入等办法,使实参获得确定的值。 (2)形参变量只有在被调用时,才分配内存单元;调用结束时,即刻释放所分配的内存单元。 因此,形参只有在该函数内有效。调用结束,返回调用函数后,则不能再使用该形参变量。 (3)实参对形参的数据传送是单向的,即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 (4)实参和形参占用不同的内存单元,即使同名也互不影响。,5.3.2 函数传值调用, C语言程序设计 (Visual C+ 6.0环境),返回本节目录,2. 数组元素作为函数参数,数组元素就是下标变量,它与普通变量并无区别。数组元素只能用作函数实参,其用法与普通变量完全相同:在发生函数调用时,把数组元素的值传送给形参,实现单向值传送。 说明: (1)用数组元素作

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号