- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第章程序结构
第六章 程序结构
我们知道,用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
您可能关注的文档
- 第章内部环境.docx
- 第章化学反应方向,速率和限度.doc
- 第章代数综合型问题.doc
- 第章《租赁》练习题及答案.doc
- 第章企业内部控制讲义.doc
- 第章串行口RS通讯协议.doc
- 第季度大豆报告.doc
- 第章可保利益.doc
- 第章合同法律制度总则.doc
- 第章CADCAM软件应用.doc
- 2025至2030串行NOR闪存行业市场占有率及有效策略与实施路径评估报告.docx
- 2026-2030中国马来松香甘油酯市场深度调查及未来前景预测报告.docx
- 2026-2030中国IT运维外包服务行业创新趋势与发展策略建议研究报告.docx
- 2026-2030中国电路板行业十四五发展分析及投资前景与战略规划研究报告.docx
- 2026-2030中国复方地芬诺酯片市场深度调查与竞争策略研究报告.docx
- 2026-2030中国合成橡胶行业供需前景调研与发展趋势预判研究报告.docx
- 2026-2030中国软磁材料行业需求趋势与投资盈利预测报告.docx
- 2026-2030中国晶体三极管行业市场深度调研及发展趋势与投资前景研究报告.docx
- 2026-2030中国移动医疗行业市场发展状况及发展趋势与投资研究报告.docx
- 2026-2030中国浴衣行业市场发展趋势与前景展望战略分析研究报告.docx
最近下载
- 分子技术的临床应用题库及答案-2025年华医网继续教育.docx VIP
- 采矿工程毕业设计(论文)-平顶山矿1.2Mta新井设计(全套图纸).doc VIP
- Zebra斑马ZQ630 用户手册.pdf
- 2025年高中语文复习讲义选择性必修下册(一) 单篇梳理2 项脊轩志.docx VIP
- 风电机组叶片防雷相似性对比研究.pptx VIP
- 2026年中国长城资产管理股份有限公司校园招聘笔试模拟试题及答案解析.docx VIP
- 国开2024年秋《经济法学》计分作业1-4答案形考任务.docx
- 2014年q12 impact提升计划管理表(结构).xls VIP
- 党政办公室工作人员业务培训教学演示课件.ppt VIP
- 山梨酸钾MSDS化学物质技术说明书.pdf VIP
原创力文档


文档评论(0)