- 1、本文档共29页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第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)