- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 函数与模块化程序设计 6.1 函数的定义和调用 函数是构成C程序的基本构件。C程序是一系列函数的集合,每个函数都具有相对独立的单一功能。 6.1 函数的定义和调用 6.1 函数的定义和调用 从用户角度 标准函数(库函数):由系统提供 用户自定义函数 从函数形式 无参函数 有参函数 6.1 函数的定义和调用 一般格式 6.1 函数的定义和调用 6.1 函数的定义和调用 返回语句 形式: return(表达式); 或 return 表达式; 或 return; 功能:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数 说明: 函数中可有多个return语句 若无return语句,遇}时,自动返回调用函数 若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换------函数调用转换 void型函数 6.1 函数的定义和调用 调用形式 函数名(实参表); 说明: 实参与形参个数相等,类型一致,按顺序一一对应 实参表求值顺序,因系统而定(Turbo C 自右向左) C程序的执行从main函数开始,调用其他函数后仍回到main函数,程序在main函数结束时结束。 函数说明 对被调用函数要求: 必须是已存在的函数 库函数: #include *.h 用户自定义函数: 函数类型说明 函数说明 一般形式: 函数类型 函数名(形参类型 [形参名],….. ); 或 函数类型 函数名(); 作用:告诉编译系统函数类型、参数个数及类型,以便检验 函数定义与函数说明不同 函数说明位置:程序的数据说明部分(函数内或外) 下列情况下,可不作函数说明 若函数返值是char或int型,系统自动按int型处理 被调用函数定义出现在主调函数之前 有些系统(如Borland C++)要求函数说明指出函数返值类型和形参类型,并且对void 和 int 型函数也要进行函数说明 形参与实参 形式参数:定义函数时函数名后面括号中的变量名 实际参数:调用函数时函数名后面括号中的表达式 参数传递方式 值传递方式 方式:函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值 特点: 形参与实参占用不同的内存单元 单向传递 函数的地址传递 方式:函数调用时,将数据的存储地址作为参数传递给形参 特点: 形参与实参占用同样的存储单元 “双向”传递 实参和形参必须是地址常量或变量 概述 变量是对程序中数据的存储空间的抽象 auto型变量在函数内部定义,它局限于所在的函数。也称为局部变量。 auto型变量定义的形式: [auto] 数据类型标识符 变量名表; extern型变量也称为外部变量,它是一种全局变量,在函数之外定义,其定义格式如下: [extern] 数据类型标识符 变量名表; 由于CPU对寄存器的操作速度要远远快于对内存的操作,为了加快操作速度,可以使用寄存器型变量。 局部变量---内部变量 定义:在函数内定义,只在本函数内有效 说明: main中定义的变量只在main中有效 不同函数中同名变量,占不同内存单元 形参属于局部变量 可定义在复合语句中有效的变量 局部变量可用存储类型:auto register static (默认为auto) 全局变量 ---外部变量 定义:在函数外定义,可为本文件所有函数共用 有效范围:从定义变量的位置开始到本源文件结束,及有extern说明的其它源文件 动态变量与静态变量 模块化程序设计 基本思想:将一个大的程序按功能分割成一些小模块, 特点: 各模块相对独立、功能单一、结构清晰、接口简单 控制了程序设计的复杂性 提高元件的可靠性 缩短开发周期 避免程序开发的重复劳动 易于维护和功能扩充 开发方法: 自上向下,逐步分解,分而治之 6.2 变量的作用域与存储类型 float max,min; float average(float array[], int n) { int i; float sum=array[0]; max=min=array[0]; for(i=1;in;i++) { if(array[i]max) max=array[i]; else if(array[i]min) min=array[i]; sum+=array[i]; } return(sum/n); } main() { int i; flo
您可能关注的文档
最近下载
- 电子部超级说服力.pdf VIP
- 地方化债又出新规:从35、47、14号文到134号文.docx
- (完整word版)学前教育专业简笔画教案.doc
- 《运筹学》课程教学大纲(本科).docx VIP
- 公路工程监理资料管理.ppt
- 华中农业大学 614微生物学 2016年考研真题.pdf VIP
- 参考学习资料 附件1:国铁集团工电部关于新建西至华中地区铁路煤运通道线名运营里程线路允许速度的函(审签稿).docx
- (新版)拖拉机驾驶证科目一知识考试题库500题(含答案).docx
- 人教部编2024年新改版语文五年级上册全套月考试题及答案(共4套).pdf VIP
- 17小学语文《盼》课件(共40张PPT).pptx VIP
文档评论(0)