文章转自公众号:Coder梁(ID:Coder_LT)

全局变量:
前面聊到了静态持续变量的链接性,其中链接性为外部的变量通常简称为外部变量。它们的存储持续性为静态,作用域为整个程序。外部变量是在函数外部定义的,因此对于所有的函数而言都是外部的。因此外部变量也被称为全局变量。
关于外部变量,C++当中有一个单定义规则:变量只能有一次定义。
这句话看起来有些难以理解,为了理解它,我们需要厘清C++当中的两种变量声明。一种是定义声明简称为定义,它给变量分配存储空间。另外一种是引用声明,简称为声明,它不给变量分配存储空间。因为它表示引用一个已有的变量。
引用声明使用关键字extern,并且不进行初始化。否则会被视为是定义,而非声明。
double up;
extern int blue;
extern char ch = 'z';
上面的例子当中,第一行和第三行为定义声明,因为第一行没有加关键字extern,而第三行的变量进行了初始化。
可能到这里还是有些难以理解,其实extern是为了引入其他文件创建的变量。如果我们不加extern,表示在当前文件当中创建一个全局变量,而加上了extern表示引入其他文件创建的全局变量。外部链接性的全局变量虽然是整个程序都可使用的,但跨文件使用时,需要手动使用extern声明。
没有通过extern声明的其他文件的全局变量也是无法使用的。
当我们同时使用局部变量和全局变量的时候会发生什么呢?比如下面这段代码:
// file1
double warning = 3.0;
// file2
extern double warning;
void test() {
double warning = 5.0;
cout << warning << endl;
}
在这段代码当中, 我们在file1中创建了变量warning,在file2当中声明了这个全局变量。并且在test函数当中又定义了一个新的double类型的变量也叫做warning,那么问题来了,当我们使用cout输出的时候,究竟得到的结果会是什么呢?
答案很简单,得到的结果是5.0。因为当同时使用同名的局部变量和全局变量时,局部变量将隐藏全局变量。
那么全局变量和局部变量究竟应该使用哪一种呢?
很明显,全局变量非常方便,使用全局变量可以免去很多参数传递的过程,大大简化了编码的难度。但如果是在大型的工程当中,使用全局变量则是一个非常危险的行为。因为全局变量人人都能访问,我们很难保证数据的准确性,会不会遭遇不可知的更改,排查的时候也更加困难。而使用局部变量,参数传递的链路是清晰的,debug的时候会容易许多。
在我们日常的算法联系当中,并不存在数据不可靠的问题。使用全局变量可以简化许多数据结构的实现过程,尤其是一些相对复杂的数据结构。我认识的所有算法竞赛的大牛,都非常喜欢使用全局变量。所以到底该用哪个并不是固定的,要根据我们的实际需要进行选择。
相关推荐:
SEO总计:如何通过SEO优化实现网站流量和排名的飞跃,三元桥网站优化
什么是seo技术,什么是seo及seo的作用 ,AI倒放仓鼠
SEO学堂:开启数字营销新时代,全面提升网站排名与流量,文山ai营销推广方案
为什么新手做seo好做,为什么要懂seo ,ai少女 3060显卡
ChatGPT网络故障报告从协调世界时(UTC)晚上1107左右开始激增,15分钟内引发广泛关注,ai无视进化
SEO自行:提升网站流量的秘密武器,邹平县个人网站建设建议
AI会生成同一篇文章吗?揭开智能创作的神秘面纱
GPT-3.5免费吗?揭秘AI智能助手的未来与收费模式,ai 美美
ChatGPTCanvex打不开?详细分析及解决方法助你顺利使用,ai2.5d网格线去除
seo软件叫什么,seo软件视频教程 ,eps ai 缩略图
OpenAI网站崩溃原因:背后的技术与挑战,千牛Ai智投在哪里找
ChatGPT打不开网页?看完这篇你就懂了!,国内ai写作安卓软件
Chatget免费网站版无需登录,畅享无限对话体验!,工业 Ai 视觉检测
OpenAI无法验证支付方式?解决方案与常见问题解析,你好月光ai
seo需要干什么,seo需要具备什么知识 ,ai梦境档案世岛大宅
什么是SEO金融,seo是做什么的 ,ai中转程序
ZBlog:开启你的个人网站新时代,轻松搭建与管理,二手手机营销推广方案
SEO有意:如何通过优化策略提升网站排名与流量,天津政府智慧网站建设
seo营销到底是什么,seo算什么营销 ,ai里面新建
SEO导航:助力网站提升流量与排名的必备工具,荣昌建筑网站建设
英语日记AI生成:轻松提升英语水平的智能助手
SEO合作:让你的网站在搜索引擎中脱颖而出,惠州抖音seo策划公司
为什么关键词太少会影响你的网络营销效果?,陕西seo网站推广工具
Chato1免费么?揭开这款AI聊天机器人的神秘面纱,交个朋友ai写作
为什么seo推广那么多,seo推广难吗 ,东莞ai听译平台
ChatGPT的破解版:AI世界的新突破,ai无禁忌
用AI写文章查重率高吗?揭秘AI写作与查重检测的关系
为什么选择SEO会员服务,让您的网站流量飞速增长,靖边专业网站建设公司
为什么seo吸引人,为什么seo吸引人呢 ,ai路径查找器绘制树
360ai问答-智能时代的全能助手,未来的智慧生活,ai生成白底
ChatGPT网页打不开?快来看看这些解决办法,轻松恢复正常访问!,ai金色包装
SEO这样做,轻松引爆流量,助力企业成长,无极标准网站优化好处
优化软件:让电脑性能焕然一新,提升效率的秘密武器,大理网站推广招聘信息最新
AI免费生成:释放创造力的秘密武器
“标题制造机”:颠覆内容创作的秘密武器,助你轻松打造吸引力十足的标题,景区线上推广用哪些网站
ChatGPT连了外网也登不了?如何解决这一问题,重新畅享AI助力!,ai少女大瓜
SEO网:让你的数字营销更加精准高效,开启网络引流新时代,丰县互联网网站推广优势
打造高效创作体验,写文章AI软件重塑内容生产力
不利于seo是什么,不属于seo对网店推广的作用 ,ai渐变下载
优排软件:高效管理新天地,轻松提升工作效率,长葛外贸网站建设
AI生成网页模板,轻松打造专业网站,ai网格画法
AI文章比对技术:引领写作与内容审核的新革命,ai智能写作小说免费
GoogleGPT-引领未来智能对话的革命,灵境ai画质
SEO运营是什么职业,seo运营工程师招聘 ,把ai图层改横幅
SEO可以改变你的商业未来:如何通过优化提升网站流量和转化率,五粮液营销推广
SEO组织:让您的网站流量倍增的秘密武器,seo 绩效标准
seo都有什么问题,seo都有什么问题和答案 ,ai凯旋公主下载
seo资源是什么意思,seo资源怎么打开 ,梅州ai自动插件加工
pbootcms前端翻译插件-轻松实现网站多语言支持,拓展全球市场,st ai绘画
SEO发明:引领数字时代营销革命的力量,速卖通外贸推广网站