- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章函数
第七章函数 §1函数的定义和调用 §2变量的存储类型、作用域和初始化 §3函数的特性 §4编译预处理 §1函数的定义和调用 一、函数的定义 函数类型 函数名(形式参数表) 形式变量说明 ? 函数内局部变量说明 函数执行部分 ? 或:函数类型 函数名(类型名 形参1,类型名 形参2,...) 函数名:见名即知意 函数类型:为函数返回值的类型。无返回结果的,为void;不规定类型的默认为整型。 形式参数表:形式参数间以“,”为分隔; 函数体:函数的局部变量只允许在本函数内使用。 return 语句:return(表达式);返回调用处。 §1函数的定义和调用 二、函数的调用 调用:使用已定义的函数。函数名(实在参数表),有返回值的函数可用在表达式中。 因形式参数与实在参数占用不同存储单元,参数传递仅是数值传递,所以形式参数中数据改变不影响实在参数中的数据。 主函数和其它函数均可调用函数(main函数除外,函数可递归调用) 被调用函数与调用函数在程序中先后顺序无关。 常在程序前说明函数的原型, 函数类型 函数名(变量类型,变量类型,...) 系统提供的函数,其原型在头文件中 例:#include stdio.h §1函数的定义和调用 例:先编写一函数prime(int n)判断n为素数否,然后,在100以内检验Goodbach猜想的正确性(即:任意一个大于4的偶数可分解为2个奇素数之和。) §1函数的定义和调用 三、函数的形式参数可以是数组 形式参数中数组的说明: 一维或多维数组中的第一维长度,可以不写,由实际参数来决定;或写时为常量,其余各维规定与实际参数相同。 实参数组把地址传递给形参,使形参数组元素的变化结果可以带回到调用函数——地址值的传递。 例:(71) §2变量的存储类型、作用域和初始化 格式:存储类型 数据类型 变量名表 一、四种存储类型:局部变量、寄存器变量、外部变量、静态变量 1)局部变量和动态变量:auto,可省略,例如在函数体中定义的普通变量。 局部:在定义的内部,可以对他们访问;在定义范围外,不可访问 动态:调用该函数时,系统才为之分配存储单元,退出该函数,则该存储单元由系统收回 2)寄存器变量:register,必须是局部变量。设置频繁使用的变量。 §2变量的存储类型、作用域和初始化 一、四种存储类型 3)外部变量:在函数外说明的变量,作用范围从说明地方起直到程序结束。为了使作用域延伸到它其他文件或定义位置前面的函数中,用 extern <类型名><变量名表> 4)静态变量:static,在编译时分配存储单元,随程序开始而开始 局部静态变量:在定义函数内存取,前次调用变量的结果可以代入下次调用的变量中 静态外部变量:限制此变量仅能在本文件中使用,不能延伸到其他文件 §2变量的存储类型、作用域和初始化 二、初始化 静态变量和外部变量仅赋一次初值。 局部变量:调用1次赋一次初值。 一、函数的递归调用 例:(73)求n! double jiecheng(intn) { if(n==1||!n) return (1); return (n*jiecheng(n-1)); } 一、函数的递归调用 例(74):(hanoi:汉诺塔的问题)n个盘子,由A?C每次移动一个,保持每根针上由大到小的顺序。请给出盘子的移动步骤 一、函数的递归调用 例(75):将十进制数转换为二进制数 方法:递归 convert(int n) { if(n/2?0)convert(n/2); printf(“%d”,n%2); } 二、调用其它文件中的函数 用预处理编译的包含命令 #include “文件名” 或 #include 文件名 预处理:编译前将有关文件内容放在一起,一行只能有一个,行尾无“;”(非语句),可以嵌套。被包含的文件只能是程序文件或.h文件。 用工程文件 §4编译预处理 编译前预先处理的命令:包含、宏定义、条件编译,以#开始,1条命令1行,行尾无“;” 一、宏定义 简单形式:#define 宏替换名 字符串 例:#define PI 3.1415926 #define PPI PI/180.0 注意:(1)凡出现宏替换名的地方,用字符串代替,后面没有“;”,每行定义一个宏替换名 (2)在“ ”中字符串不替换,例:printf(“PI=%d”,6*s); (3)宏替换名大写,常量用常量标识符定义,意义明确,修改方便。 (4)宏定义作用域:自定义的地方到文件结束。结束定义用: #undef 宏替换名 §4编译预处理 已定义过的宏替换名可用于定义其它宏替换名 例:#define P printf #define C “\n” #define D “\d” #define DC DC P(D
文档评论(0)