c++全局变量与静态变量「建议收藏」

c++全局变量与静态变量「建议收藏」概述:全局变量和和由static修饰的静态变量都被储存在全局数据区。全局数据区的内存在程序运行时会被全部置’0′.这不同于局部变量,局部变量在栈上分配内存,但此块内存一般不为零,且编译器不会在局部变量被声明的地方为其置’0′,除非申明时对其初始化值为0.全局变量:申明在main函数外的变量被编译器视为全局变量。即其在整个文件的任何地方都可以使用它。对于其他源文件来说,全局变量…

大家好,又见面了,我是你们的朋友全栈君。

概述:

全局变量和和由static修饰的静态变量都被储存在全局数据区。全局数据区的内存在程序运行时会被全部置’0′.这不同于局部变量,局部变量在栈上分配内存,但此块内存一般不为零,且编译器不会在局部变量被声明的地方为其置’0′,除非申明时对其初始化值为0.

 

全局变量:

申明在main函数外的变量被编译器视为全局变量。即其在整个文件的任何地方都可以使用它。

对于其他源文件来说,全局变量对其有可见性。即可以在其他源文件中通过包含此源/头文件然后通过extern关键字引用此全局变量。

静态变量:

静态变量在被申明在文件任何地方都会被视作静态变量(感觉是废话,嘻嘻),只要它被static关键字所修饰(好像还是废话)。而若想创建一个全局变量,其必须在main函数外和其他函数外被申明,否则它就不是全局变量了。

对于其他源文件来说,本文件的静态变量是不可见的,无法外部被引用。

但申明在本文件的哪个地方对本文件其他地方能否访问静态变量是有影响的。如果静态变量像全局变量一样被申明在所有函数之外,那么在本文件任何地方都能访问到此静态变量(当然要保证申明的地方在访问的地方之前)。如果静态变量被申明在某个函数中,那么在此函数外,此静态变量是不可访问的。这有点像局部变量,不过它是静态的。什么意思呢?举个例子,一个被申明在test()函数内部的局部变量a,在test()每次被调用时,都会在栈上被重新分配内存,test函数执行完毕时,a所代表的内存区域被释放。而如果a被申明为静态的。在test()第一次被调用时,编译器会在全局数据区为a分配内存,在test函数执行完毕后,a所代表的内存区域并不会被释放,它的值还是原来的值。在以后test()的每次调用都不会再理会a变量的申明语句(如” static int a; “),即使申明语句带有初始化性质(如” static int a=10 “)。

参考了:

https://blog.csdn.net/candyliuxj/article/details/7853938

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/146133.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • pycharm鼠标滚动控制字体大小_pycharm窗口放大

    pycharm鼠标滚动控制字体大小_pycharm窗口放大1、放大页面方法第一步:打开file里面的setting,然后打开Keymap,再搜索框中输入increase,点击increaseFontSize,双击AddMouseShortcut(先不用点OK)第二步:点击AddMouseShortcut弹出下面对话框,然后按住ctrl并向上滚动鼠标滑轮,将变成第二个对话框,点击OK;第三步:显示下面页面表示设置放大成功,点击OK即可。2、缩小页面方法与上面方法类似,将increase变成decrease输入即可;…

  • js解析PSD文件,Java处理psd文件智能图层

    js解析PSD文件,Java处理psd文件智能图层现在市面上很多的webapp都提供模板功能,所谓模板就是一系列元素的集合,模板的制作一般都需要设计师先在Photoshop等软件中制作好设计好,然后再一定的方式来还原设计稿,要么需要编码要么需要在某些应用中按照设计稿重画设计生成模板数据,都还是比较麻烦的,我们能不能通过psd文件直接生成模板呢?要做到这点我们就需要解析psd文件,而psd文件是Photoshop软件的涉及保存文件,浏览器并不能直接识别,所幸的是psd.js赋予了我们这样的能力。foxpsd是一个用来解析PhotoShop的PSD文件的

  • 了解大数据的技术生态系统 Hadoop,hive,spark(转载)

    了解大数据的技术生态系统 Hadoop,hive,spark(转载)

  • 三极管放大倍数_放大倍数为100的晶体管

    三极管放大倍数_放大倍数为100的晶体管恢复内容开始三极管的交流放大倍数和直流放大倍数是两个不同的概念,但其值近似相等三极管的直流放大倍数是hFE---hFE=直流IC/IBβ是指三极管的交流电流放大倍数---β=输出交流电流/

  • 全面介绍Android Studio中Git 的使用(一)

    全面介绍Android Studio中Git 的使用(一)一、Git与GitHub这里首先介绍下Git与GitHub是什么东西,他们之间有何区别呢?Git:分布式版本控制系统,最初用在Linux上,可以和SVN、CVS等作为同一个概念理解,目前世界上最先进的分布式版本控制系统(没有之一)。GitHub:基于Git的项目托管平台,简单的说就是一个网站,通过注册账号后,可以使用Git服务,它提供了可以在上面创建资源仓库的Web页面,通过shell命令或者图形用户界面可以和远程项目同步更新,对项目进行管理。还是不太清楚?就是一个项目由多个人一起干,开发中对于

  • 怎么复制网页不能复制的文字_网页文字无法复制

    怎么复制网页不能复制的文字_网页文字无法复制环景:win10专业版火狐浏览器92.01问题描述:有些网站上文字不能复制解决方案:1.打开XX文库网页2.按F12点击consle控制台,输入document.body.innerText3.找到要复制的文字复制即可

    2022年10月13日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号