全局变量和静态局部变量有什么区别
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
全局变量和静态局部变量有什么区别?
存储的地方是一样的,不同之处在于它们的作用域不同:
全局变量基本上在程序的任何地方都能被看到
而静态局部变量只能在其指定的范围内被使用
比如
int i ; // 全局变量
class C
{
public:
static int i_C; // 静态局部变量
}
void main()
{
i = 1; // 合法
i_C = 1; // 错误
C::i_C = 1; // 合法
C cc;
cc.i_C = 2; // 合法
}
2、
全局变量具有外部连接性,即同一工程中其它文件中的也可引用。
而静态变量不具有外部连接性,即同一工程中其它文件中不可以引用。如:
//cpp1.cpp
extern int x=10;
static int y=5;
//cpp2.cpp
#include
void main()
{
extern int x;
extern int y;
cout< cout< } 将这两个文件放在同一工程中,你发现每一文件单独编译能通过,但作为工程不能构成.exe 文件运行。若将有关变量y的行注释后(或将static换成extern)就可以了。这是因为静态变量的作用域在本文件内,不能扩充到其它文件。其作用是当多人合作开发一个工程时,仅在自己的文件内使用的全局变量用静态变量不会与其他人用的变量相混淆,这就是标识符的一致性。 3、静态局部变量 在局部变量前加上“static”关键字,就成了静态局部变量。静态局部变量存放在内存的全局数据区。函数结束时,静态局部变量不会消失,每次该函数调用时,也不会为其重新分配空间。它始终驻留在全局数据区,直到程序运行结束。静态局部变量的初始化与全局变量类似.如果不为其显式初始化,则C++自动为其初始化为0。 静态局部变量与全局变量共享全局数据区,但静态局部变量只在定义它的函数中可见。静态局部变量与局部变量在存储位置上不同,使得其存在的时限也不同,导致对这两者操作的运行结果也不同。 以下无正文 仅供个人用于学习、研究;不得用于商业用途。 For personal use only in study and research; not for commercial use. 仅供个人用于学习、研究;不得用于商业用途。 Nur für den persönlichen für Studien, Forschung, zu kommerziellen Zwecken verwendet werden. Pour l 'étude et la recherche uniquement à des fins personnelles; pas à des fins commerciales. 仅供个人用于学习、研究;不得用于商业用途。 толькодля людей, которые используются для обучения, исследований и не должны использоваться в коммерческих целях. For personal use only in study and research; not for commercial use