EABA名词的空间域时间域和物理存储位置PPT学习教案_第1页
EABA名词的空间域时间域和物理存储位置PPT学习教案_第2页
EABA名词的空间域时间域和物理存储位置PPT学习教案_第3页
EABA名词的空间域时间域和物理存储位置PPT学习教案_第4页
EABA名词的空间域时间域和物理存储位置PPT学习教案_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、会计学1EABA名词的空间域时间域和物理存储位名词的空间域时间域和物理存储位置置第1页/共45页是对多个工程进行组织和管理的框架。一个工作区内的多个工程应该是相关的。不同工程间可以共享文件。第2页/共45页图6. 1 C/C+程序逻辑结构第3页/共45页第4页/共45页例例6. 1 量值模块作用域的验证量值模块作用域的验证#include int fun(int x)void main()int a=10; int b; printf(a= %dn,a); b=fun(a);printf(a= %d, b= %dn, a, b);调用调用fun函数,函数,a(10)为实参)为实参fun函数的声

2、明函数的声明int fun(int x)int a=20; printf(a= %d, x= %dn, a, x); return a+x;fun内定义的内定义的a只在只在fun内有效内有效返回返回a+x的值(的值(20+10)第5页/共45页a= 10a= 20, x= 10a= 10, b= 30Press any key to continuemain()中的输出中的输出fun()中的输出中的输出main()中的输出中的输出第6页/共45页例例6. 1 量值模块作用域的验证量值模块作用域的验证#include int fun(int x)void main()int a=10; int

3、b; printf(a= %dn,a); b=fun(a);printf(a= %d, b= %dn, a, b);printf(“x= %dn, x);调用调用fun函数,函数,a(10)为实参)为实参fun函数的声明函数的声明编译出错:编译出错:error C2065: x : undeclared identifierint fun(int x)int a=20; printf(a= %d, x= %dn, a, x); printf(b= %dn, b); return a+x;fun内定义的内定义的a只在只在fun内有效内有效返回返回a+x的值(的值(20+10)编译出错:编译出错:

4、error C2065: b : undeclared identifier第7页/共45页第8页/共45页fun内定义的类型内定义的类型Person,只在只在fun内有效内有效在在main函数内声明一个在函数内声明一个在fun函数内定义的函数内定义的Person类型的变量类型的变量LiSi,编译出错,编译出错声明声明Person类型的变量类型的变量ZS,并赋值并赋值第9页/共45页id=1name=张三Press any key to continue第10页/共45页类型和量值覆盖了外层模块的同名类型和量值,导致只能引用内层中定义的部分。第11页/共45页int month;int day

5、;main函数内(外层模块)定义的函数内(外层模块)定义的Person类型类型main函数内(外层模块)定义的函数内(外层模块)定义的Date类型类型第12页/共45页声明外层模块定义的声明外层模块定义的Person类型的变量类型的变量ZS内、外层定义了同名的内、外层定义了同名的Person类型,类型,LiSi是内层的是内层的Person类型的变量类型的变量内层模块定义的同名内层模块定义的同名Person类型,成员不同类型,成员不同声明外层模块定义的声明外层模块定义的Date类型的变量类型的变量Birthday,外层定义,内层可见,外层定义,内层可见在内层输出内层在内层输出内层Person类型

6、变量类型变量LiSi的大小的大小在外层输出外层在外层输出外层Person类型变量类型变量ZS的大小的大小在外层输出内层在外层输出内层Person类型变量类型变量LiSi的大小,编译出错的大小,编译出错第13页/共45页sizeof(LiSi)= 20sizeof(ZS)= 16Press any key to continue第14页/共45页n类型只能定义在前,引用在后。n变量通常定义在前,引用在后。n变量如果定义在后,引用在先,必须在引用前明确用关键字extern声明。第15页/共45页定义在文件中的定义在文件中的Person类型类型定义在文件中的定义在文件中的int型变量型变量i第16页

7、/共45页在在main函数的外层模块中声明一个函数的外层模块中声明一个Person类型的变量类型的变量ZS,并赋值,并赋值在在main函数的内层模块中引用整型变量函数的内层模块中引用整型变量i,并赋值,并赋值i= 10id=1 name=张三Press any key to continue第17页/共45页第18页/共45页在在main函数的外层模块中声明一个定义在文件后面的函数的外层模块中声明一个定义在文件后面的Person类型的变量类型的变量ZS,并赋值。编译出错,并赋值。编译出错定义在文件后面的定义在文件后面的Person类型类型第19页/共45页定义在文件前面的定义在文件前面的Per

8、son类型类型第20页/共45页Person ZS; int i;定义在文件后面的变量定义在文件后面的变量i,ZS声明在文件后面定义的变量声明在文件后面定义的变量i声明在文件后面定义的变量声明在文件后面定义的变量ZSi= 10id=1 name=张三Press any key to continue第21页/共45页出错出错原因原因:”定义在后,重定义在后,重新声明,然后引用新声明,然后引用”的的规则模块外(文件内)规则模块外(文件内)的全局变量在模块内引的全局变量在模块内引用的规则,不能应用于用的规则,不能应用于模块内声明的局部变量模块内声明的局部变量。注意注意: ”定义在后,重定义在后,重

9、新声明,然后引用新声明,然后引用”的的规则不适合类型,只适规则不适合类型,只适合变量。合变量。第22页/共45页工程中的其它文件。n能够在一个工程中的多个文件之间相互影响的是一个文件内的全局类型、全局量值和全局函数模块。第23页/共45页return xy?x:y;求最大值函数求最大值函数第24页/共45页int i=100;定义在本工程中各个文件内的函数(定义在本工程中各个文件内的函数(MyFile0.cpp)的声明)的声明对系统头文件的包含对系统头文件的包含本工程要使用的类型定义本工程要使用的类型定义本工程中其它文件要使用的全局变量的定义。本工程中其它文件要使用的全局变量的定义。第25页/

10、共45页i= 100id=100 name=张三max= 20Press any key to continue写成:写成:#include 出错,用户自定义的头文件只能使用双引号出错,用户自定义的头文件只能使用双引号第26页/共45页键字static。这时,同工程的其它文件无法使用。第27页/共45页MyMFile1.cpp中的main函数调用出错。第28页/共45页第29页/共45页可以写为auto int a;。n动态量值在其被定义的模块外同时丧失空间域和时间域,即其占用的内存被释放,它的值当然就不存在了,也就无法访问了第30页/共45页循环调用阶乘函数循环调用阶乘函数阶乘函数的声明阶乘

11、函数的声明第31页/共45页定义定义f为静态变量为静态变量1 !=12 !=23 !=64 !=245 !=120Press any key to continue第32页/共45页main()fac(1)fac(1)static int f=1return ff=f*n=1fac(2)f=1return ff=f*n=2fac(2)fac(3)f=2return ff=f*n=6fac(3)fac(4)fac(4)f=6return ff=f*n=24fac(5)fac(5)f=24return ff=f*n=120第33页/共45页#includeint fac (int );void m

12、ain()int i;for (i=1; i=5; i+) printf(%d !=%dn, i, fac(i);int fac(int n)int f=1; f=f*n;return (f);1 !=12 !=23 !=34 !=45 !=5Press any key to continue第34页/共45页main()fac(1)fac(1)int f=1return ff=f*n=1fac(2)int f=1return ff=f*n=2fac(2)fac(3)int f=1return ff=f*n=3fac(3)fac(4)fac(4)int f=1return ff=f*n=4fa

13、c(5)fac(5)int f=1return ff=f*n=5第35页/共45页文件中,可以访问。当在定义全局量值和函数时,用static加以限定,这时的全局量值和函数的时间域是整个工程,但空间域被限定在本文件。第36页/共45页对定义在本工程其它文件中全局变量的声明对定义在本工程其它文件中全局变量的声明a= 1Press any key to continue第37页/共45页在文件在文件tem1中变量中变量b是用是用static定义的,它的空间域被限定在文件定义的,它的空间域被限定在文件tem1中中编译出错:在文件编译出错:在文件tem2中无法对中无法对b声明和调用。声明和调用。第38页/共45页main()函数内的局部变量,未赋值;而并非函数内的局部变量,未赋值;而并非tem1文件中声明的全局变量文件中声明的全局变量a,初值为,初值为1a= -858993460Press any key to continue第39页/共45页模块内的动态变量每次调用一切重新开始。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论