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

马谦马谦马谦
马谦马谦马谦
马谦马谦马谦
606
文章
12
评论
2018年3月15日17:18:39 评论

一、全局变量

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

马谦马谦马谦
  • 本文由 发表于 2018年3月15日17:18:39
  • 转载请务必保留本文链接:https://www.dyxmq.cn/program/code/c-cpp/cpp-global-variable-and-static.html
给socket分配随机端口 C/C++

给socket分配随机端口

客户端的socket不需要手动执行bind绑定地址,但这不意味着客户端socket真的不需要绑定端口,实际上是内核它帮我们做了这个操作,在执行connect时,内核发现没有绑定端口,就会自动选择一个合...
vector中emplace_back方法的用途 C/C++

vector中emplace_back方法的用途

在写代码的过程中,CLion提醒我把push_back方法替换成emplace_back方法: 代码中我的想法是使用vector创建一个二维数组,并提前分配好空间,避免后序频繁扩容增加时间复杂度。 e...
宏定义踩坑实战:嵌套调用宏定义 C/C++

宏定义踩坑实战:嵌套调用宏定义

问题背景:在刷题的过程中,要使用min函数,但是线上OJ并没有这个函数。因为一时也想不起它到底属于哪个头文件,所以为了偷懒,顺手就写下了以下宏定义: #define min(x, y) (x) <...
匿名

发表评论

匿名网友 填写信息

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