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

名词的空间域时间域和物理存.pptVIP

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
名词的空间域时间域和物理存

第6章名词的空间域、时间域和物理存储位置 空间域:一个类型或量值,从程序的什么位置到什么位置是有效的,是可以引用的,是占据内存的。 时间域:一个类型或量值,在程序执行过程中,从什么时刻开始到什么时刻是占据内存的。 名词的空间域和时间域不完全一致。 有空间域的类型或量值,一定有时间域。即在程序的某位置可以访问的类型或量值,此时一定占据内存; 有时间域的类型或量值,不一定有空间域。即有的时候,程序执行到某个位置,某个类型或量值虽然占据内存,但无法访问,即在该位置不可见。 6.1 C/C++程序的逻辑结构 程序从小到大可分为如下逻辑单位: 语句(statement):分号结束 2.模块(block): 一对花括号括起的若干语句。 3.嵌套模块: 多对花括号的嵌套。 4.文件(file): 程序的存盘单位。文件中通常包含多个模块(或嵌套模块),每个模块内包含多个语句。 5.工程(project): 工程是功能单位,是对多个文件进行组织和管理的框架。同一个工程内的文件之间可以交换数据,共享函数。 6.工作区(workspace): 工作区是VC++最大的开发单位,是对多个工程进行组织和管理的框架。一个工作区内的多个工程应该是相关的。不同工程间可以共享文件。 6.2名词性的类型和量值在各逻辑结构上的空间域 6.2.1模块域 模块{ }是空间作用域的最小范围。 缺省情况下,定义在模块内(一对花括号内)的类型和量值,其有效范围是从定义位置到本模块结束。出本模块右花括号后,该类型或量值因为释放内存空间而失效,无法访问。 例6. 2 类型模块作用域的验证 #include stdio.h Person fun(); Person fun() { struct Person { int id; char name[10]; } ZS={1, 张三}; return ZS; } void main() { Person LiSi; LiSi=fun(); } 例6. 2 类型模块作用域的验证 #include stdio.h struct Person { int id; char name[10]; } ; Person fun(); void main() { Person LiSi; LiSi=fun(); printf(id=%d\n,LiSi.id ); printf(name=%s\n,LiSi.name ); } Person fun() { Person ZS={1, 张三}; return ZS; } 6.2.2嵌套模块的层域 当一个模块内嵌套另一个模块时,定义在内层模块的类型和量值的空间域就是内层模块; 定义在外层模块内的类型和量值的空间域是外层模块,涵盖内存模块,即在内层模块内可以引用定义在外层模块内的类型和量值。 当内层模块内定义了和外层模块内同名的类型和量值时,内层的类型和量值覆盖了外层模块的同名类型和量值,导致只能引用内层中定义的部分。 例6. 3 嵌套模块中的同名类型或量值的空间域 #include stdio.h void main() { struct Person { int id; char name[10]; }; struct Date { int year; int month; int day; }; Person ZS; {//内嵌模块开始 struct Person { int id; char name[10]; int Class; }; Person LiSi; Date Birthday; printf( sizeof(LiSi)= %d\n, sizeof(LiSi)); } //内嵌模块结束 Person WW; printf(sizeof(ZS)= %d\n, sizeof(ZS)); printf(sizeof(WW)= %d\n, sizeof(WW)); printf(%d, sizeof(LiSi)); } 6.2.3文件域 程序的所有代码都是写在文件中的。 用C/C++编写程序,最少要有一个文件。 在文件内定义的类型或量值(注意:不包含在任何模块中,而是直接定义在文件中)的空间域是从定义位置开始,到本文件的结束。本文件内,在定义该类型或量值后面的任何模块内或模块外,都可以引用该类型或量值。 类型只能定义在前,引用在后。 变量通常定义在前,引用在后。 变量如果定义在后,引用在先,必须在引用前明确用关键字extern声明。 例6. 4 文件中定义的类型或量值的空间域 #incl

文档评论(0)

ipad0d + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档