谭浩强C程序设计第四版

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


2. register说明符
register说明符在定义变量时说明此变量存储在CPU中的寄存器中,以加快存

取速度。一般编译器自己选择几个变量采用寄存器存储,不需要在程序中声
5
明。

构 造 数 据 类 型
3. extern说明符 如果一个完整的计算机程序很大,分成多个模块,放在不同的文件中,分开 编译成目标文件,最后连接成一个完整的可执行代码。对于所有模块共同使 用的全局变量,如果在所有的模块中都定义,在连接时就会出错。 解决办法是只在一个模块中定义全局变量,在其他模块中用extern说明这是 一个“外来”的全局变量。
8 extern void p2dispG();
9 extern void p2dispg();
第 10 int G=0,g=0;
5 11 void main() 章
12 {
构 运13行p结1d果isp:G();
造 数
in14p1pG2d=is1p1G();
据 in15p2pG2d=is2p2g();
C
+
+





计 教
第6章 C++程序的结构

第 5
制作人:沈显君

构 造 数 据 类 型
C
+ +
第6章 C++程序的结构

言 程
学习目标





1. 区分各种变量的类型以及在内存中的存放;
2. 理解局部静态变量的双重特征;
第 5
3. 区分各种类型标识符以及他们的作用域与可见性;

4. 掌握几种预处理命令的常用用途;

当一个程序准备运行时,操作系统会为程序分配一块内存空间,C++程序的
言 内存通常被分为四个区:

序 设 计
①全局数据区(data area) ②代码区(code area)

③栈区(stack area)

④堆区(heap area)
全局变量、静态变量、字符串常量、常变量存放在全局数据区;所有的函
5 void p1dispG()
6{
7
G=11;
8 cout<<"in p1 G="<<G<<endl;
9}
1 // p6_1_p2.cpp
2 #include <iostream>
3 using namespace std;
4 extern int G;
5 extern int g;
6 void p2dispG()
序 其格式为:


static 数据类型 变量名=初值;


static可用来声明全局静态变量和局部静态变量。当声明全局静态变量时,全 局静态变量只能供本模块使用,不能被其它模块再声明为extern变量。

例如:将程序p6_1_p.cpp中的全局变量声明为:
5
static int G=0;

那么在其他模块中就不能声明为:


类 注意:

堆空间不是系统为程序自动分配的,它是程序执行过程中由new语句为变量
分配的。即使指向堆空间的指针变量消失,new语句分配的空间也不会消失。
new语句分配的空间由delete语句释放。
C
+
+ 语1 言2
程3
序4
设 计
5
教6
程7
8
教 程1
2
int g=100000; int sum(int x, int y)
g为全局变量
3{
第4
int sum=0;
5 章
5
6
for(int i=x;i<=y;i++) sum=sum+i;
构7
造 数
8
据9
return sum; } void main()
类 10 {
型 11
int x=1,y=100;
7{
8
G=22;
9
cout<<"in p2 G="<<G<<endl;
10 }
11 vog=222;
14 cout<<"in p2 g="<<g<<endl;
15 }
C
+ +
6.1.2 变量的存储类型

言 4. static说明符

static说明符用于在定义变量时将变量声明为成static(静态)变量。
sum()中 x、y为局部变量 main()中的 x、y为局部变量
12
cout<<sum(x,y)+g<<endl;
13 }
C
+ +
6.1.2 变量的存储类型


C++中变量有auto 、extern、register、static四种存储类型。

序 设 计 教
1.auto说明符 auto说明符说明定义的是一个局部变量。局部变量默认存储类型为auto, 所以 在程序中很少使用auto说明符说明。

extern int G; //错误,G已经是一个static变量;


据 类 型
注意:
当一个局部变量声明为static变量,它既具有局部变量的性质:只能在函数体
局部存取;又具有全局变量的性质:函数多次进入,变量的值只初始化一次。因
此静态局部变量实质是一个供函数局部存取的全局变量。
C
+ +
6.1.3 变量在内存中的存储
类 in16p2cgou=t2<2<"2in p G="<<G<<endl;
型 in17p Gco=u2t<2<"in p g="<<g<<endl;
in18p g} =222
1 // p6_1_p1.cpp
2 #include <iostream>
3 using namespace std;
4 extern int G;
第 数和代码存放在代码区;为运行函数而分配的函数参数、局部变量、返回地址存
5
放在栈区;堆区用于动态内存分配。

变量的生存期为从产生到消失的时期。全局变量、静态变量、常变量生存
构 周期为整个程序的生存周期,因此称为静态生存期;局部变量的生存周期起于 造 函数调用,结束于函数调用结束,其生存期是动态的,因此称为动态生存期。
C
+
+ 1 /***************************
语 言
2 * p6_1_p.cpp
*
程 3 * 主程序
*
序 4 ***************************/
设 5 #include <iostream>
计 6 using namespace std;
教 程
7 extern void p1dispG();
构 造
5. 理解名字空间的概念与几种使用方法。




C
+ +
6.1 变量的类型


除了按数据类型区分变量外,根据变量定义的位置,可以把变量分成全局

变量与局部变量。全局变量是指定义在函数体外部的变量,它能被所有函数使

用。局部变量是指定义在函数或复合语句中的变量,只能在函数或复合语句中

使用。

相关文档
最新文档