- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第06章程序结构
第六章 程序结构
我们知道,用VC设计软件时首先要建立一个工程文件,在这个工程文件中指定了该工程用到的所有文件,这其中包含了所有C++程序文件。C++程序是由许多函数组成的,函数是由语句组成的。如下图所示。
在设计程序时,需要定义大量标识符,对标识符的操作是程序设计的关键。标识符一经定义就有了其作用范围,它在某些范围内是可见的,并不是定义之后都能使用。特别是在多文件结构中,标识符的作用范围除了块级、函数级、还包括文件级和程序级;全局变量不再只是文件级变量,而又分为外部变量和静态全局变量;函数则又分为外部函数和静态函数等。
因此在设计多文件结构的C++程序时,有着比单文件结构更复杂的特性。
本章将介绍多文件结构C++程序的特点。
考核知识点:
外部存储类型:exern
静态存储类型:static
标识符的作用域
标识符的可见性与生命期
头文件与多文件结构
编译预处理
6.1多文件结构
在设计大型系统时,一般都由多个程序设计人员合作完成,每个程序员完成一部分程序,并以文件的形式存储起来,这样一个工程就包含多个程序文件。
C++支持多文件结构,即允许一个工程文件中建立多个程序文件。多文件结构与单文件有比较大的区别。 在多文件结构中,除了全局变量、局部变量之外还包括:外部变量、静态全局变量、外部函数、内部函数(静态函数)等特殊函数的标识符。
6.2外部存储类型
全局变量是指作用在整个程序中的变量,也就是作用在程序的每一个C++源文件。前面讲过只要在函数外定义的变量即为全局变量,但并不是说全局变量在每个文件中都是可见的,当用非当前文件内部定义的全局变量时就需要对该全局变量先进行说明,因此这种变量被称为外部变量。
除了外部变量之外,同样还有外部函数。外部函数就是不在本文件中定义的函数。外部变量和外部函数因为在外部文件中定义和分配存储空间,因此外部变量和外部函数统称为外部存储类型。
外部存储类型在外部文件中定义,那么怎样才能访问外部变量和外部函数呢?。
访问外部变量
C++中通过声明数据和变量为extern(外部的) 来引用外部定义的变量。
例6.1.1 下面两个文件同属于一个工程,指出下面程序的运行结果。
//excpp1.cpp
#include iostream.h
int a;
int func(int,int);
void main( )
{
int x,y=3;
x=y - ++a;
coutfunc(x,y)’ ‘;
couta’ ‘x’ ‘yendl;
}
//excpp2.cpp文件
extern int a;
int func (int x,int y)
{
x++;
y+=a++;
return x+y;
}
答:输出结果为
7 2 2 3
说明:
文件excpp2.cpp中使用的变量a被声明为外部变量,它是excpp1.cpp中定义的全局变量。若要在程序中使用其他文件中定义的全局变量,则必须在程序中将其做外部声明。带extern的变量说明被称为外部声明,它不同以变量定义,因为被外部声明的变量并不在该文件中分配空间。因此不能将每个文件中使用的同一个变量都声明为外部变量,必须有一个变量应被定义,否则编译将会出错。
被声明为外部的变量其类型必须与该变量的定义一致。
2、访问外部函数
默认情况下,函数声明或定义后总是被认为是外部的,因此,在每个文件中都可以调用其他文件中定义的函数。因此不特意称函数为外部函数。
6.3 静态存储类型
有时在某文件中定义了一个全局变量,可是又不想让其他文件对该变量访问,这种全局变量就称为内部变量(注意与局部变量的区别)。同样的除了内部变量外还允许定义只在文件中起作用的内部函数。内部变量和内部函数因其定义在文件内部且只能在文件内部被访问,因此被称为静态存储类型,内部变量也称为静态全局变量,内部函数又称为静态函数。
静态全局变量
在全局变量前加上关键字static,该全局变量就成为静态全局变量。
特点:静态全局变量只在定义该变量文件的所有程序中是可见的。
例6.2.1 下面的三个文件同属于一个工程文件,指出下面程序的执行结果。
//cpp1.cpp
#include iostream.h
int n;
void func1( );
void main( )
{
n=10;
coutnendl;
func1( );
}
//cpp2.cpp
#include iostream.h
static int n;
void func2( );
void func1( )
{
n++;
func2( );
coutnendl;
}
//cpp3.cpp
您可能关注的文档
最近下载
- GB+39496-2020尾矿库安全规程.docx VIP
- 衡水体英文字母字帖.pdf VIP
- 聚酰亚胺 化学、结构与性能的关系及材料.pdf VIP
- 2025-2026学年小学信息技术(信息科技)五年级上册重大版(2023)教学设计合集.docx
- 迎春杯历年试题全集(上).pdf VIP
- 建筑结构检测鉴定与加固课程-第7章 钢结构加固.ppt VIP
- PW5300_2.0数据手册下载.pdf VIP
- 建筑结构检测鉴定与加固课程-第8章 建筑结构的改造.ppt VIP
- 重大版小学信息技术教案四年级上册教案.doc VIP
- 多因子选股系列研究之十八:成交量激增与骤降时刻的对称性与“一视同仁”因子构建.pdf VIP
文档评论(0)