E7ABA0名词的空间域时间域和物理存储位置.pptVIP

E7ABA0名词的空间域时间域和物理存储位置.ppt

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

空间域:一个类型或量值,从程序的什么位置到什么位置是有效的,是可以引用的,是占据内存的。 时间域:一个类型或量值,在程序执行过程中,从什么时刻开始到什么时刻是占据内存的。 第6章名词的空间域、时间域和物理存储位置 名词的空间域和时间域不完全一致。 有空间域的类型或量值,一定有时间域。即在程序的某位置可以访问的类型或量值,此时一定占据内存; 有时间域的类型或量值,不一定有空间域。即有的时候,程序执行到某个位置,某个类型或量值虽然占据内存,但无法访问,即在该位置不可见。 6.1 C/C++程序的逻辑结构 程序从小到大可分为如下逻辑单位: 语句(statement):分号结束 2.模块(block): 一对花括号括起的若干语句。 3.嵌套模块: 多对花括号的嵌套。 4.文件(file): 程序的存盘单位。文件中通常包含多个模块(或嵌套模块),每个模块内包含多个语句。 5.工程(project): 工程是功能单位,是对多个文件进行组织和管理的框架。同一个工程内的文件之间可以交换数据,共享函数。 6.工作区(workspace): 工作区是VC++最大的开发单位,是对多个工程进行组织和管理的框架。一个工作区内的多个工程应该是相关的。不同工程间可以共享文件。 图6. 1 C/C++程序逻辑结构 6.2名词性的类型和量值在各逻辑结构上的空间域 6.2.1模块域 模块{ }是空间作用域的最小范围。 缺省情况下,定义在模块内(一对花括号内)的类型和量值,其有效范围是从定义位置到本模块结束。出本模块右花括号后,该类型或量值因为释放内存空间而失效,无法访问。 例6. 1 量值模块作用域的验证 #include stdio.h int fun(int x) void main() { int a=10; int b; printf(a= %d\n,a); b=fun(a); printf(a= %d, b= %d\n, a, b); } 调用fun函数,a(10)为实参 fun函数的声明 int fun(int x) { int a=20; printf(a= %d, x= %d\n, a, x); return a+x; } fun内定义的a只在fun内有效 返回a+x的值(20+10) a= 10 a= 20, x= 10 a= 10, b= 30 Press any key to continue main()中的输出 fun()中的输出 main()中的输出 例6. 1 量值模块作用域的验证 #include stdio.h int fun(int x) void main() { int a=10; int b; printf(a= %d\n,a); b=fun(a); printf(a= %d, b= %d\n, a, b); printf(“x= %d\n, x); } 调用fun函数,a(10)为实参 fun函数的声明 编译出错:error C2065: x : undeclared identifier int fun(int x) { int a=20; printf(a= %d, x= %d\n, a, x); printf(b= %d\n, b); return a+x; } fun内定义的a只在fun内有效 返回a+x的值(20+10) 编译出错:error C2065: b : undeclared identifier 例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(); } fun内定义的类型Person,只在fun内有效 在main函数内声明一个在fun函数内定义的Person类型的变量LiSi,编译出错 声明Person类型的变量ZS,并赋值 例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

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档