文档详情

第七篇 函数.ppt

发布:2017-05-31约2.05万字共113页下载文档
文本预览下载声明
第7章 函数 C语言是通过函数来实现模块化程序设计的。较大的C语言应用程序往往是由多个函数组成的,每个函数分别对应各自的功能模块。从用户的使用角度看,函数有两种:标准函数(即库函数)和用户自定义函数。本章主要讨论的是用户自定义函数。通过本章的学习,读者应该掌握以下内容: 函数的定义与函数声明 函数的调用 函数的嵌套调用与递归调用 数组作为函数参数 内部变量与外部变量 变量的动态存储与静态存储 内部函数与外部函数 7.1 函数的定义与函数说明 7.1.1 相关知识 C语言是由函数组成,一个C语言程序必须包含一个且仅一个main函数,由main 函数开始调用其他函数,其他函数也可相互调用,但最终返回主函数结束程序。 7.1.2 程序范例 通过下例程序认识和学习函数的定义,理解函数的执行过程。 1.范例一 任务:定义一个函数,用于求两个数中的大数。 源程序: int max(int n1,int n2) /*定义一个int类型的名为max的函数*/ { return (n1n2?n1:n2); /*函数体*/ } main() /*主函数main()*/ { int max(int n1, int n2); /*函数声明*/ int num1,num2; printf(input two numbers:\n); scanf(%d%d, num1,num2); printf(max=%d\n, max(num1,num2)); /*调用max函数*/ getchar(); /*使程序暂停,按任一键继续*/ } 输入:5 18 运行结果: max=18 程序说明:上述程序由两个函数组成:main()和max()。程 序由main()为入口,当执行到printf(max=%d\n, max(num1,num2));语句时,暂停主函数,转去执行max()函数,当max()函数执行完毕,通过return返回一个int型值到main()函数的暂停处继续后面语句的执行。 2.范例二 任务:编写函数将小写字母转换成大写字母作为函数值返回,其他字符不变。用字符@结束输入。 源程序: #includestdio.h char bigchar(char ch) /*定义一个char类 型的名为bigchar的函数*/ { if(ch=a ch=z) /*bigchar函数的函数体*/ ch=ch-32; return ch; } main() /*定义一个main()函数*/ { char c; while((c=getchar())!=@) /*循环判断是否为@*/ { c=bigchar(c); /*调用bigchar()*/ putchar(c); } } 输入:ab123WER@ 输出:AB123WER 程序说明:上述程序由main()和bigchar()函数组成,由main()为入口,当执行到c=bigchar(c);语句时,暂停主 函数的执行,转去执行bigchar()函数,当bigchar()函数执行完毕,通过return返回一个char型值到main()暂停处继续后面语句的执行。 7.1.3 知识归纳 通过观察以上程序,我们可以得出以下要点: 1.函数的定义 (1)任何函数(包括主函数main())都是由函数说明和函数体两部分组成。根据函数是否需要参数,可将函数分为无参函数和有参函数两种。 1)无参函数的一般形式: 函数类型 函数名( ) { 说明语句部分; 可执行语句部分; } 2)有参函数的一般形式: 函数类型 函数名( 数据类型 参数1[,数据类型 参数2……] ) { 说明语句部分; 可执行语句部分; } 有参函数比无参函数多了一个参数表。调用有参函数时,调用函数将赋予这些参数实际的值。为了与调用函数提供的实际参数区别开,将函数定义中的参数表称为形式参数表,简称形参表。 (2)注意事项。 1)函数定义不允许嵌套。在C语言中,所有函数(包括主函数main())都是平行的。一个函数的定义可以放在程序 中的任意位置,主函数main()之前或之后。但在一个函数的函数体内,不能再定义另一个函数,即不能嵌套定义。 2)空函数是既无参数、函数体又为空的函数。其一般形式为: 函数类型 函数名( ) { } 调用此函数时,什么工作也不做,没有任何实际作用。 3)在老版本C语言中,参数类型说明允许放在函数说明部分的第2行单独指定。 2.函数类型与函数的返回值 (1)函数类型。在定义函数时,对函数类型的说明,应与return语句中、返回值表达式的类型一致。如果不一致,
显示全部
相似文档