C++全局变量和静态变量的区别

一、全局变量

全局变量默认是静态的,通过 extern 关键字声明后可以在多个文件中使用。

具体可参考:C++变量的声明、定义和 extern 关键字

header.h

source1.cpp

source2.cpp

main.cpp

source1.cppsource2.cpp 可共同使用全局变量 gCnt,程序将输出:

二、 static

对于全局的 static 变量,它的作用域只在当前的文件,即使外部使用 extern 关键字也是无法访问的。

修改 source1.cpp 中的 gCnt 声明为:

编译不通过:

因为 source2.cpp 中无法访问 source1.cpp 中的 gCnt,导致 gCnt 未定义,需要在 source2.cpp 中添加 gCnt 的定义:

添加后程序运行结果为:

两个文件的 gCnt 不共通,所以 f1() 返回 10,f2() 返回 0

《 C++全局变量和静态变量的区别》 有 2 条评论

发表评论