- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
清华C语言程序设计:第05章函数
第5章 函数 讲授内容 5.1 模块化程序设计(1/3) 复杂问题一般可以分解为若干稍简单的问题 每个问题的解决对应一个模块的求解 解决复杂问题的系统一般由逐级抽象的诸模块组成 每个模块是一个类或函数 5.1 模块化程序设计(2/3) 函数是C++程序构成的基础 任何C++程序至少包含一个函数——main()函数 函数也是类的方法的实现手段 函数的作用 实现系统中按功能分解的各小任务 实现类对象的方法 C++程序的设计最终都落实到一个个函数的设计上 5.1 模块化程序设计(3/3) 函数是C++源程序的基本模块 C++中的函数包括两类: 预定义函数, C++提供了丰富的库函数,程序员可以在自己的程序中直接使用 用户自定义函数,用户根据需要编写的函数 一个C++程序可包含多个文件,一个文件可包含多个函数 5.2 预定义函数的使用(1/2) C++提供了丰富的库函数,这些库函数的声明都放在相应的头文件中 要使用这些库函数,必须先包括相应的头文件,然后直接使用 例如:数学运算函数的声明包含在math.h中,要使用这些函数,程序中必须加上代码 #include math.h 5.2 预定义函数的使用(2/2) 函数调用的一般过程 先计算实参表达式的值 然后将计算的结果交给被调用函数 再执行被调用函数的代码,直至返回语句return或到函数尾 最后程序控制返回到函数的调用处,继续执行 printf(“%.2f”,sqrt(900.0));的执行过程 以900.0为参数调用sqrt函数,得到返回结果30.0 以%.2f和30.0为参数调用printf函数,实现格式化输出 5.3 函数定义与函数原型 函数 模块化 所有在函数体中说明的变量都是局部变量 仅在定义的函数中有效 参数 函数间传递信息 局部变量 5.3 函数定义与函数原型 函数的优点 分而治之 有利于程序开发 避免代码重复 软件重用 重用已有的函数来构造新的程序 抽象-隐蔽内部的细节 5.3 函数定义与函数原型 函数原型 函数名 参数类型:函数的各形式参数类型,所带参数名被忽略 可定义默认参数 返回值类型:函数返回值的数据类型 (省缺是 int) 原型仅在函数先调用后定义时用(向前引用) 5.4 函数的调用(1/3) 调用函数时一般要传递参数 传值和传引用 传值 把实在参数的值传递给函数的形式参数 函数的执行对实在参数没有影响 函数不需要修改实在参数时,用传值方式 避免意外改变 5.4 函数的调用(2/3) 传引用 把实在参数的地址传递给函数的形式参数 函数的执行可以改变实在参数 函数确实需要修改实在参数时,用传引用方式 要求实在参数有“左值性质” 5.4 函数的调用(3/3) 默认参数(例子13、例子14) 内联函数(例子12) 5.5 函数重载(例子15) C++允许定义多个同名函数表示类似的操作——函数重载 这些函数必须有不同的参数(参数的个数、类型或顺序不同) 调用重载函数时,编译器通过检查实在参数的个数、类型和顺序来确定相应的被调用函数 int abs(int i); long abs(long l); double abs(double d); 5.6 存储类别和作用域(1/9) auto,register,extern,static 存储期:在内存中的存在期 作用域:在程序中可以引用该变量的区域 连接:变量在哪些源文件中能够被识别 “最近嵌套原则” 5.6 存储类别和作用域(2/9) 自动存储 在定义的块中建立、存在和撤销 auto: 局部变量(包括形式参数)的省缺说明符 auto double x, y; register: 为变量分配高速寄存器 只能用于auto变量 register int counter = 1; 5.6 存储类别和作用域(3/9) 静态存储 变量在整个程序运行期间都存在 省缺值为0 static: 可以用于函数中的局部变量 函数运行结束,变量的值依然存在 只能在定义变量的函数中访问该变量 extern: 全局变量和函数名的省缺定义 在所有的函数中都能访问 5.6 存储类别和作用域(4/9) 四种作用域 文件作用域 函数作用域 块作用域 函数原型作用域 5.6 存储类别和作用域(5/9) 文件作用域 在函数外面定义的标识符,能够被从标识符说明到文件结束之间的所有函数引用 全局变量、函数定义、函数原型 5.6 存储类别和作用域(6/9) 函数作用域 只能在函数体中引用 标号是唯一具有函数作用域的标识符 5.6 存储类别和作用域(7/9) 块作用域 在程序块中声明的标识符具有块作用域 块作用域开始于声明处,结束于程序块的右花括号 函数的形式参数、函数的局部变量、在复合语句中声明的变量具有块作用域 如
文档评论(0)