[工学]第07章-函数与变量作用域.ppt

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

第7章 函数与变量作用域 C语言是通过函数来实现模块化程序设计的。 教学目的: 掌握函数的定义与调用,变量的作用域; 了解函数的嵌套与递归调用,内部、外部函数特点,以及变量的存储特性。 教学内容: 7.1* 函数的定义与调用 7.2 函数的嵌套调用与递归调用 7.3 内部函数与外部函数 7.4* 内部变量与外部变量 7.5 变量的存储特性 本章要点 本章作业与上机实践 7.1* 函数定义与函数调用 7.1.1 函数定义 任何函数都是由函数说明和函数体两部分组成。 1.分类 根据函数有无参数,将函数分为无参函数和有参函数。 (2) 函数类型 ①函数类型应与return语句中“返回值表达式”的类型一致。 如果不一致,则以函数类型为准。 ②如果缺省函数类型,则系统一律按int型处理。 良好的程序设计习惯: 为了使程序具有良好的可读性并减少出错,将无返回值函数定义为空类型void; 同时,也不使用系统对函数类型的缺省处理。 7.1.2 函数调用与返回 1、对被调用函数的说明和函数原型 (1) 函数说明的一般格式 在新标准中,采用函数原型方式,对被调用函数进行说明: 函数类型 函数名(形参表); (2) 函数说明的两种方式 ① 谁调用谁说明:函数说明语句放在调用函数的函数体中。 例如,在[案例7.1]主函数main()中: void main( void ) { int max( int n1, int n2); …… } ②预先统一说明——函数说明通常放在所有函数定义体之前。 在这种方式下,所有调用函数都无需再对自定义函数进行说明。 例如,在[案例7.1]中,可以将对max()函数的说明放在程序文件开始处: void main( void ) { int max(int n1, int n2); …… } 显然,对于被多个函数调用的自定义函数而言,采用预先统一说明方式进行说明,可以有效地减少函数说明次数。 注意: 如果被调用函数的定义体,出现在调用函数之前,可以缺省说明。 2、函数调用 函数名([实参表]) 例如,在[案例7.1]的主函数中: printf(……, max (num1, num2) ); 注意:调用有参函数,必须提供实参(常量/变量/表达式/函数) 。调用时,实参必须具有确定的值,且与形参个数相等、类型匹配。 (1) 调用方式 ① 语句方式——无返回值函数的调用,可作为一条独立的语句。 例如,printf()、scanf ()等库函数的调用,均作为一条独立的语句。 ② 表达式方式——有返回值函数作为表达式的一项,以函数返回值参与表达式的运算。 例如,“max = max(x, y)”是一个赋值表达式,把max()函数的返回值赋予变量max。 (2) 断点与函数调用的返回 断点——被调用函数执行完毕,返回调用函数后继续执行的位置。 调用函数中的断点位置分两种情况: ① 语句调用方式:断点为函数调用语句的下一条语句。 例如,[案例7.1]中的语句调用“printf(……);”,其断点为该语句的下一条语句“getch();” 。 ② 表达式调用方式:断点为函数调用所在的表达式。 例如,在[案例7.1]中,“printf(……, max(num1, num2) );”语句中的表达式调用“max(num1, num2)”: 其断点为该表达式调用所在的表达式“max(num1, num2)”(在本例中,“max(num1, num2)”函数调用既是表达式调用,本身又构成一个简单表达式)。 7.1.3 参数传递 发生函数调用时,根据参数值的性质不同,将参数传递分为两种: (1) 值传递——参数值是一个一般数据(整形、实型、字符型数据等)。 系统把实参值复制1份给形参;被调用函数结束时,形参值不能传回给实参。 (2) 地址(引用)传递——参数值是一个地址。 (1)形参变量只有在被调用时,才分配内存单元;调用结束时,立即被释放。 因此,形参只有在该函数内有效。调用结束,返回调用函数后,则不能再使用该形参变量。 (2)实参和形参占用不同的内存单元,即使同名也互不影响。 7.1.4 小结 1.函数定义不允许嵌套。 2.调用有参函数时,实参的个数和类型,必须与形参匹配。 3 .函数调用的两种方式与断点位置 (1) 语句方式:断点为函数调用语句的下一条语句。 (2) 表达式方式:断点为函数调用所在的表达式。 4.参数传递分两种: (1) 值传递:单向传递。 (2) 地址(引用)传递。 [返回] 7.2 函数的嵌套调用和递归调用 7.2.1 函数的嵌套调用 [案例

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档