C语言课件(作用域与存储类别).ppt

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

作用域与存储类别 作用范围和存储类别 作用范围 存储类别 包含多个源文件的程序 简介 变量定义的完整格式: 存储类别 数据类型 变量名 数据类型 占据存储空间的大小 取值范围 存储类别 在内存中持续的时间(生存期) 在硬件中存放的位置 其它属性 作用范围 可以被引用的程序部分(可见性) 作用范围 程序中的所有标识符构成了名字空间。 标识符的作用范围 能够引用该标识符的程序部分。 四种作用范围: 文件作用范围 函数作用范围 程序块作用范围 函数原型作用范围 作用范围 文件作用范围 在函数外声明的标识符,可以在所有函数中被引用。 包括:全局变量,函数定义,函数原型。 作用范围 函数作用范围 在函数体内定义的标识符,只能在函数体内被引用。 包括:语句标号 作用范围 程序块作用范围 在程序块内声明的变量,在程序块内被引用。 包括:程序块内的变量(局部变量),函数的参数。 作用范围 函数原型作用范围 函数原型中的参数。 关于声明和定义 定义声明 定义一个标识符,同时也是声明。 对于变量,定义意味着创建,即为其分配内存。 引用声明 只是声明一个需要引用的标识符。 存储类别 四种存储类别说明符 auto register extern static 两种存储时期 自动存储时期 auto register 静态存储时期 extern static 自动存储类别 自动存储 程序执行到变量所在的程序块内时创建它,退出时销毁。 不会被自动初始化。 auto(自动变量):局部变量的缺省类别。 程序块中声明的变量,函数的参数。 register(寄存器变量):建议编译器把变量放进高速的寄存器。 只适用于自动变量。 静态存储类别 静态存储 程序开始执行时创建,在程序执行期间,变量一直存在。 自动被初始化,缺省初值:0 或 ‘\0’。 static(静态变量):可以用于在程序块中定义的变量。 退出程序块后依然存在,并保留值。 但不改变其作用范围,即只能在所在的程序块内被使用。 extern(外部变量):用来声明在“外部”定义的全局变量。 仅用于声明变量。 案例分析:存储类别 存储类别 读下面的程序,写出结果。(cw0901.c) 案例分析:存储类别 存储类别 结果分析 C语言程序的内存映像 C语言程序的内存映像 案例分析:外部变量 外部变量(cw0902.c) 案例分析:作用范围与存储类别 作用范围与存储类别(cw0903.c) 案例分析:作用范围与存储类别 作用范围与存储类别 案例分析:作用范围与存储类别 作用范围与存储类别 案例分析:作用范围与存储类别 作用范围与存储类别 案例分析:作用范围与存储类别 作用范围与存储类别 包含多个源文件的程序 包含多个源文件的程序 每个函数的定义必须在一个文件内,不能被分割。 全局变量可以被同一文件内的函数访问。 如果需要被其他文件内的函数访问,则必须在其他文件内声明。 extern 表示变量myGlobal是在另一个文件内定义的。 一个文件内定义的函数,也可以被其他文件内的函数调用。 在每个文件内加入该函数的原型(声明为外部函数)。 函数的原型可以不需要 extern。 包含多个源文件的程序 包含多个源文件的程序 举例 包含多个源文件的程序 包含多个源文件的程序 static 限制全局变量只能被同一文件内的函数访问。 限制函数只能被同一文件内的函数调用。 编译包含多个源文件的程序 编译包含多个源文件的程序 每个源文件必须被编译,然后链接成一个可执行文件。 如果有一个文件作了改动,则必须重新编译所有相关的文件。 一般会提供 make 工具用来管理和编译多源文件的程序。 创建 makefile 文件,记录编译规则。 自动查找必须编译的源文件。 可以创建工程(project)文件来管理多源文件的程序。 小结 用于存储程序数据的内存可用存储时期和作用范围来表征。 存储时期可以是静态的或自动的。 如果是静态的,变量所用内存在程序开始执行时被分配,并在程序执行时一直存在。 如果是自动的,变量所用内存在程序执行到该变量定义所在的代码块时开始分配,在退出代码块时释放。 作用范围决定了哪一部分程序可以访问某个数据。 C语言程序可以包含多个源文件,在编译时,逐一编译各文件,然后通过链接器链接所有的目标代码构成可执行文件。 C语言程序设计 作用范围和存储类别 作用范围和存储类别 作用范围和存储类别 int total; int max(int, int); void main() { … } int limit; int max(int x, int y) { … } 作用范围 从声明的位置开始,到文件的末尾。 作用范围和存储类别 void main() { … loop: … goto

文档评论(0)

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

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

1亿VIP精品文档

相关文档