- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章节函数与宏替换”
第6章 函数与宏替换 本章内容 6.1 模块化设计 6.2 函数的定义与调用 6.3 函数的递归调用 6.4 变量的存储类型、作用域 6.5 宏替换 6.6 综合应用 6.1模块化设计 模块化设计思想 把一个大问题分解成若干个比较容易求解的小问题,然后分别求解 模块设计原则 模块独立 功能单一。 模块间的联系力求简单。 数据局部化。 模块的规模要适当 分解模块要注意层次 6.2函数的定义与调用 6.2.1标准库函数 math.h头文件中函数:abs()、sin()、cos()、exp()、fabs()、floor()、rand()等 stdio.h头文件中函数:fgets()、fopen()、fprintf()、fputc()、gets()、puts()、fread()、getchar() 、putchar()、open()、close()、printf()、scanf()等 ctype.h头文件中函数: isalnum()、isalpha()、ispunch()、isspace()、isupper()、isxdigit()等 string.h头文件中函数:strcat()、strchr()、strcmp()、strcpy()、strlen()、strlwr()、strncat()、strncpy()、strstr()、strupr()等 6.2.2函数的定义 类型说明符 函数名称 (形式参数类型及说明列表) { /*以下为函数体*/ 局部变量声明部分 语句序列 } 函数的声明部分 类型说明符 定义了函数中return语句返回值的类型 省略类型说明符,函数返回一个整型值 函数没有返回值,可以定义为void 函数名称 遵循C语言标识符的命名规则 形式参数类型及说明列表 用逗号分隔的形式参数列表 每个列表项均由“类型说明符”和“形式参数名称”两部分组成 没有参数,括号仍然是必须要有的 函数体 和main函数一样,必须将变量声明语句和其它语句序列用{}括起来 如果有返回值,需要通过return语句返回 return语句的一般形式为: return(表达式); 或者 return 表达式; return语句有两个重要作用 返回一个值; 退出当前函数。 6.2.3函数的调用 调用函数定义在主调函数之前,主调函数可以直接调用 被调用函数定义在主调函数之后,则需要在主调函数中声明被调用函数。 函数的声明格式 类型名 函数名称(形式参数类型列表); 注意: 函数声明语句后面需加分号。 在声明函数时,函数的参数名称可以省略,但参数类型不能省略,且参数类型的个数、类型、次序必须保持一致。 函数的调用 无参函数调用的一般形式为: 函数名(); 有参函数调用的一般形式为: 函数名(实参表达式1,实参表达式2,……) c=max(a,b); printf(“%d”,c); 函数的嵌套调用 在C语言中,允许在定义一个函数时调用另外一个函数,则在该函数被调用的过程中将发生另一次函数调用 6.2.4参数的传递 形参和实参的概念 函数定义时使用的参数称之为形式参数,简称形参 函数调用时使用的参数,称之为实际参数,简称实参 在函数调用时,实参的个数要和形参相等,而且类型必须一致,另外实参与形参出现的次序也要一一对应。 程序举例 【例6.2】输入两个数,输出两个数中的最大值 #include stdio.h main() { int a,b,m; int max(int,int); /*声明max函数*/ printf(\nPlease input two numbers(a,b):); scanf(%d,%d,a,b); m=max(a,b); /*调用max函数*/ printf(max=%d\n,m); } int max(int x,int y) { int t; t=xy?x:y; return t; } 形参和实参的特点 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。 实参可以是常量、变量、表达式、函数等,在进行函数调用时,它们必须具有确定的值,以便把这些值传送给形参。因此,应预先用赋值、输入等方法使实参获得确定值。 实参和形参在数量上,类型上,顺序上应严格一致,否则会产生类型不匹配的错误。同时,实参和形参具有一一对应的关系。 函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值无论怎么改变,实参中的值都不会变化。 6.3函数的递归
文档评论(0)