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

下载本文档

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

文档简介

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

2、a); b=fun(a);printf(a= %d, b= %dn, a, b);调用调用(dioyng)fun函数,函数,a(10)为实参)为实参fun函数函数(hnsh)的声明的声明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页第六页,共45页。a= 10a= 20, x= 10a= 10, b= 30Press any key to continuemain()中的输出中的输出(shch)fun()中的输

3、出中的输出(shch)main()中的输出中的输出(shch)第6页/共45页第七页,共45页。例例6. 1 量值模块量值模块(m kui)作用域的验证作用域的验证#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);printf(“x= %dn, x);调用调用(dioyng)fun函数,函数,a(10)为实参)为实参fun函数函数(hnsh)的声明的声明编译出错:编译出错:error C2065: x : undeclared ide

4、ntifierint 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)编译出错:编译出错:error C2065: b : undeclared identifier第7页/共45页第八页,共45页。第8页/共45页第九页,共45页。fun内定义的类型内定义的类型(lixng)Person,只在只在fun内有效内有效在在main函数内声明一个在函数内声明一个在fun函数内定义的函数内定义的Perso

5、n类型的变量类型的变量LiSi,编译,编译(biny)出错出错声明声明Person类型的变量类型的变量ZS,并赋值并赋值第9页/共45页第十页,共45页。id=1name=张三(zhn sn)Press any key to continue第10页/共45页第十一页,共45页。kui)内的类型和量值。当内层模块(m kui)内定义了和外层模块(m kui)内同名的类型和量值时,内层的类型和量值覆盖了外层模块(m kui)的同名类型和量值,导致只能引用内层中定义的部分。第11页/共45页第十二页,共45页。int month;int day;main函数内(外层模块)定义函数内(外层模块)定义

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

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

8、的在文件中的Person类型类型定义定义(dngy)在文件中的在文件中的int型变量型变量i第16页/共45页第十七页,共45页。在在main函数的外层模块中声明函数的外层模块中声明(shngmng)一个一个Person类型的变量类型的变量ZS,并赋值,并赋值在在main函数的内层模块中引用函数的内层模块中引用(ynyng)整型变量整型变量i,并赋值,并赋值i= 10id=1 name=张三Press any key to continue第17页/共45页第十八页,共45页。第18页/共45页第十九页,共45页。在在main函数的外层模块中声明一个定义在文件后面的函数的外层模块中声明一个定义

9、在文件后面的Person类型类型(lixng)的变量的变量ZS,并赋值。编译出错,并赋值。编译出错定义在文件后面定义在文件后面(hu mian)的的Person类型类型第19页/共45页第二十页,共45页。定义定义(dngy)在文件前面的在文件前面的Person类型类型第20页/共45页第二十一页,共45页。Person ZS; int i;定义在文件后面定义在文件后面(hu mian)的变量的变量i,ZS声明在文件后面声明在文件后面(hu mian)定义的变量定义的变量i声明在文件后面定义的变量声明在文件后面定义的变量ZSi= 10id=1 name=张三Press any key to c

10、ontinue第21页/共45页第二十二页,共45页。出错出错(ch cu)原因:原因:”定义在后,重新定义在后,重新(chngxn)(chngxn)声明,然后声明,然后引用引用”的规则模块外(文的规则模块外(文件内)的全局变量在模块件内)的全局变量在模块内引用的规则,不能应用内引用的规则,不能应用于模块内声明的局部变量于模块内声明的局部变量。注意:注意: ” ”定义在后,重定义在后,重新新(chngxn)(chngxn)声明,然声明,然后引用后引用”的规则不适合类的规则不适合类型,只适合变量。型,只适合变量。第22页/共45页第二十三页,共45页。(wnjin)之间相互影响的是一个文件(wn

11、jin)内的全局类型、全局量值和全局函数模块。第23页/共45页第二十四页,共45页。return xy?x:y;求最大值函数求最大值函数(hnsh)第24页/共45页第二十五页,共45页。int i=100;定义在本工程中各个文件内的函数定义在本工程中各个文件内的函数(hnsh)(MyFile0.cpp)的声明)的声明对系统头文件的包含对系统头文件的包含(bohn)本工程要使用的类型定义本工程要使用的类型定义本工程中其它文件要使用的全局变量的定义。本工程中其它文件要使用的全局变量的定义。第25页/共45页第二十六页,共45页。i= 100id=100 name=张三(zhn sn)max=

12、20Press any key to continue写成:写成:#include 出错,用户出错,用户(yngh)自定义的头文件只能使用双引号自定义的头文件只能使用双引号第26页/共45页第二十七页,共45页。格限定只能使用在某一个特定文件中。这时,将它们定义在这个文件中,并且在全局量值和函数的定义前使用关键字static。这时,同工程的其它文件无法使用。第27页/共45页第二十八页,共45页。导致MyMFile1.cpp中的main函数调用出错。第28页/共45页第二十九页,共45页。第29页/共45页第三十页,共45页。量”,如通常的int a; 详细的可以写为auto int a;。动

13、态量值在其被定义的模块外同时丧失空间域和时间域,即其占用的内存被释放,它的值当然就不存在了,也就无法访问了第30页/共45页第三十一页,共45页。循环调用阶乘循环调用阶乘(ji chn)函数函数阶乘阶乘(ji chn)函数函数的声明的声明第31页/共45页第三十二页,共45页。定义定义(dngy)f为静态变量为静态变量1 !=12 !=23 !=64 !=245 !=120Press any key to continue第32页/共45页第三十三页,共45页。main()fac(1)fac(1)static int f=1return ff=f*n=1fac(2)f=1return ff=f

14、*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页第三十四页,共45页。#includeint fac (int );void main()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

15、第34页/共45页第三十五页,共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=4fac(5)fac(5)int f=1return ff=f*n=5第35页/共45页第三十六页,共45页。文件中,可以访问。当在定义全局量值和函数时,用static加以限定,这时的全局量值和函数的时间域是整个工程,但空间域被限定在本文件。第36页/共45页第三十七页,共45

16、页。 extern int a;printf(“a= %dn, a); 对定义对定义(dngy)在本工程其它文件中全局变量的声明在本工程其它文件中全局变量的声明a= 1Press any key to continue第37页/共45页第三十八页,共45页。printf(b= %dn, b);在文件在文件tem1中变量中变量b是用是用static定义的,它的空间定义的,它的空间(kngjin)域被限定在文件域被限定在文件tem1中中编译出错:在文件编译出错:在文件tem2中无法中无法(wf)对对b声明和调用。声明和调用。第38页/共45页第三十九页,共45页。printf(“a= %dn, a); main()函数函数(hnsh)内的局部变量,未赋值;而并非内的局部变量,未赋值;而并非tem1文件中声明的全局变量文件中声明的全局变量a,初值为,初值为1a= -858993460Press any key to continue第39页/共45页第四十页,共45页。模块内的动态变量每次调用一切重新开始。静态变量速度快,耗费(hofi)资源;动态变量反之。第40页

温馨提示

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

评论

0/150

提交评论