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

马谦马谦马谦 2018年3月15日17:18:39 发表评论
文章最后编辑于:2018-5-4 21:53:17

一、全局变量

全局变量默认是静态的,通过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

本文共执行42次查询,耗时0.279秒!
马谦马谦马谦

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: