网站大量收购闲置独家精品文档,联系QQ:2885784924

05B函数与程序结构.ppt

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课件制作 第5章 函数与程序结构(B) 主要内容 局部变量,全局变量 静态变量 变量的存储类型 变量的作用域 变量的生命期 变量的可见性 编译预处理 头文件与多文件结构 小结与作业 5.11 局部变量和全局变量 程序的运行和数据的访问 5.11 局部变量和全局变量 程序的内存区域 5.11 局部变量和全局变量 局部变量(local variable) 函数内部定义的变量,只在本函数范围内有效 复合语句( { } 括起的语句 ) 中定义的变量,只在本复合语句范围内有效 5.11 局部变量和全局变量 局部变量(local variable) 局部变量如果没有显式初始化其内容是不可预料的,即变量必须在使用之前声明 一个局部变量的作用域从它的声明开始,直至包含它的程序块结束 可以在一个函数内的复合语句中定义变量,这些变量只在本复合语句中有效,这种复合语句也称为分程序或程序块 形式参数也是局部变量,参数的作用域覆盖整个函数 不同函数中可以使用同名的变量,它们代表不同的对象,互不干扰 函数中的局部变量存放在栈区 5.11 局部变量和全局变量 5.11 局部变量和全局变量 5.11 局部变量和全局变量 全局变量,也称全程变量 ( global variable) 在函数之外定义的变量 全局变量的有效范围为从定义变量的位置开始到本源文件结束 全局变量的默认值:数值变量是 0, 字符变量 为空格 5.11 局部变量和全局变量 5.11 局部变量和全局变量 全局变量 如果在同一个源文件中,全局变量与局部变量同名,则在局部变量的作用范围内,全局变量被屏蔽,即它不起作用;此时若要使用全局变量,可通过一元作用域解析运算符 :: 访问全局变量,参见P122示例 设全局变量的作用是增加函数间数据联系的渠道 建议不在必要时不要使用全局变量 全局变量在程序的全部执行过程中都占用存储单元,而不是仅在需要时才开辟单元 在执行函数时要受到外部变量的影响,使函数的通用性降低,难于移植 使用全局变量过多,会降低程序的清晰性。在各个函数执行时都可能改变全局变量的值,程序容易出错 5.12 静态局部变量 在局部变量前使用关键字 static 修饰,该变量即成为静态局部变量,如 static int a; 静态局部变量存放在内存的全局数据区,在程序整个运行期间都不释放 静态局部变量赋初值是在编译时分配值的,即只赋初值一次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值 若在定义静态局部变量时不赋初值,编译时自动赋初值0(对数值型变量)或空字符(对字符型变量) 静态局部变量在其他函数是不能引用它的,即在其他函数中它是“不可见”的 5.12 静态局部变量 5.12 静态局部变量 5.12 静态局部变量 如果初始化后,变量只被引用而不改变其值,则这时用静态局部变量比较方便,以免每次调用时重新赋值 用静态存储要多占内存,而且降低了程序的可读性,当调用次数多时往往弄不清静态局部变量的当前值是什么 尽可能少用静态局部变量 5.13 存储类型 存储类型指的是数据在内存中存储的方法 存储方法分为动态存储和静态存储两大类 动态存储 自动的(auto)、 寄存器的(register) 外部的(extern) 静态存储 静态的(static) 5.13 存储类型 自动存储 自动变量用关键字auto作存储类别的声明 存储类别auto 和数据类型int 的顺序一般auto 在前 关键字auto可以省略,系统把它默认为自动存储类别 程序中大多数变量属于自动变量 5.13 存储类型 寄存器存储 只适用于变量 变量前加 register 修饰,如 register int a; 当今的优化编译系统能够识别使用频繁的变量,自动地将这些变量放在寄存器中 外部存储:由多个文件构成的一个程序,在一个文件中需要使用另一文件定义的函数或全局变量,需要在使用前用关键字extern 进行声明 5.13 存储类型 5.13 存储类型 外部存储 带extern 的变量说明是变量声明,不是变量定义 默认的函数声明或定义总是extern存储 所有函数的声明一般都放在源文件的开始位置 若共同的变量在各个文件中分别定义,或者声明的类型不一致,都会造成直接或间接错误 5.13 存储类型 静态存储 静态局部变量 静态全局变量 在全局变量前用 static 修饰,使变量只在该源文件中可用,称之为全局静态变量,又称静态全局变量 在多文件组成的程序中,静态全局变量使得该变量成为定义该变量的源文件所独享 静态全局变量对组成该程序的其他源文件是无效的 静态函数 在函数定义返回值类型前加 static 形成静态函数,如 static int fn(){……}; 静态函数使得该函数只在一个源文件中有

文档评论(0)

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

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

1亿VIP精品文档

相关文档