欢迎来到天天文库
浏览记录
ID:51970052
大小:97.50 KB
页数:43页
时间:2020-03-26
《谭浩强全套配套课件C程序设计教程 C演示文稿07.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章函数本章要点:● 掌握函数的定义,函数的说明和函数的调用。● 掌握函数参数的普通值传递和地址值(指针值)传递。● 掌握函数的嵌套调用和递归调用。● 掌握数组作为函数参数。● 掌握函数指针及其应用。● 理解变量的作用域和存储类别。●理解外部函数和内部函数的概念。●了解编译预处理命令(文件包含、宏定义和条件编译)的知识。27.1概述为了使程序大而不繁,简洁明了,设计者要根据软件的总体要求,把相同功能或相似功能的操作归纳成模块的形式,并设计成函数,以实现程序设计的模块化。函数是C程序的重要成份,
2、它封装了完成某一特定功能的程序代码和数据,实现较高级的抽象。函数从使用的角度可分自定义函数和系统的库函数;从函数有无参数的角度可分有参函数和无参函数;从有无返回值的角度可分有返回值函数和无返回值函数;而返回值是指针的函数又称指针型函数等。设计者根据具体情况定义不同种类的函数。3C语言的库函数放在不同的头文件中,例如常用的输入输出函数放在stdio.h头文件中;数学函数放在math.h头文件中;有关字符串处理函数放在string.h头文件中;屏幕处理函数放在conio.h头文件中;图形处理函数放在g
3、raphics.h头文件中等等。设计者尽量使用现成的库函数,以节约程序的开发时间。学习本章的目的主要在于懂得编写不同类型的函数(函数的设计)和函数原型的说明以及函数调用方面的基本知识。此外,本章还谈及变量的作用域和存储类别,以便对变量有一个进一步的认识。最后还介绍了编译预处理命令。47.2函数的定义函数定义的一般格式是:函数值类型函数名(参数说明表){函数体}其中函数值类型指函数返回值的数据类型。若函数不需要返回值,则函数值类型可选void;函数名的选用跟标识符相同;参数说明表用来说明完成函数功能
4、所需传递的参数及它们的数据类型,这些参数在设计函数时往往还没有具体的数值,因此这些参数也称形式参数(简称形参)或虚拟参数(简称虚参);函数体的设计跟主函数体相同,即函数可以有自已的变量或数组的说明,各种各样的语句结构和操作等。5函数可以没有类型和没有参数,此时函数值类型和参数用void表示,例如完成打印一行60个*号的函数,可定义成:voidprint(void){inti;for(i=0;i<60;i++)printf("%c",'*');}如果一行里要打印n个某字符的函数,那就要定义成有参数的
5、函数:voidprint(intn,charch){inti;for(i=0;i6、;i+=2)s=s+i;returns;/*返回语句*/}函数返回值的数据类型7返回语句的一般形式是:return表达式;函数经过调用后返回return后面表达式的值。当没有返回值(无返回值函数)时,返回语句可以没有,也可以写成:return;注意,有返回值的return语句,其执行过程是先计算表达式的值,若该值的类型与函数值类型相同,直接返回调用函数,若该值类型和函数值类型不同,则系统把它自动转换为与函数值类型相同后返回,这种转换是强制性的,当函数类型所含字节数小于表达式数据类型所含字节数时,可7、能出现不保值的情况。8void类型函数可以有return语句,也可以没有return语句。没有return语句时,函数执行到函数体的最后那个右花括号时,自动返回调用函数,即函数体的最后那个右花括号也有return语句的作用,如上述的print()函数。另外,函数中有可能根据条件执行不同的模块,也就是说,在不同的模块中可有各自的return语句。这样在函数中就会出现多个return语句,这是允许的,但是每次执行函数只可能有一个return语句起作用。9当函数要返回指针时,函数名前加*号,如连接两个字8、符串(把字符串s2连接到s1的后面)的函数,可定义如下:char*strca2(char*s1,char*s2){inti,j;i=j=0;while(s1[i]!=’ ’)i++;/*确定连接位置*/while(s2[j]!=’ ’)s1[i++]=s2[j++];/*连接s2*/s1[i]=’ ’;/*在字符串s1最后加结尾符空*/returns1;}指针参数s1和s2代表两个字符串的首地址函数名前加*号10综上所说,设计函数时首先决定函数值的类型和选定一个函数名,然后决
6、;i+=2)s=s+i;returns;/*返回语句*/}函数返回值的数据类型7返回语句的一般形式是:return表达式;函数经过调用后返回return后面表达式的值。当没有返回值(无返回值函数)时,返回语句可以没有,也可以写成:return;注意,有返回值的return语句,其执行过程是先计算表达式的值,若该值的类型与函数值类型相同,直接返回调用函数,若该值类型和函数值类型不同,则系统把它自动转换为与函数值类型相同后返回,这种转换是强制性的,当函数类型所含字节数小于表达式数据类型所含字节数时,可
7、能出现不保值的情况。8void类型函数可以有return语句,也可以没有return语句。没有return语句时,函数执行到函数体的最后那个右花括号时,自动返回调用函数,即函数体的最后那个右花括号也有return语句的作用,如上述的print()函数。另外,函数中有可能根据条件执行不同的模块,也就是说,在不同的模块中可有各自的return语句。这样在函数中就会出现多个return语句,这是允许的,但是每次执行函数只可能有一个return语句起作用。9当函数要返回指针时,函数名前加*号,如连接两个字
8、符串(把字符串s2连接到s1的后面)的函数,可定义如下:char*strca2(char*s1,char*s2){inti,j;i=j=0;while(s1[i]!=’ ’)i++;/*确定连接位置*/while(s2[j]!=’ ’)s1[i++]=s2[j++];/*连接s2*/s1[i]=’ ’;/*在字符串s1最后加结尾符空*/returns1;}指针参数s1和s2代表两个字符串的首地址函数名前加*号10综上所说,设计函数时首先决定函数值的类型和选定一个函数名,然后决
此文档下载收益归作者所有