c/c++语言开发共享与C中的全局变量和本地变量相同

我得到了答案i = 2.但我的问题是i = 0发生了什么? 根据我的理解,i = 0将在DATA SEGMENT中,I = 2将在STACK SEGMENT中

#include  int i = 0; void main() { int i = 2; printf("i value is %dn",i);` } 

    局部变量i隐藏了全局变量i 。 因此,当您打印它时,它将打印局部变量。

    如果要修改全局变量,可以使用此处提到的想法:

    如何在C中访问带阴影的全局变量?

    暗影 。 您的全局变量i = 0被本地i = 2遮蔽。

    不要这样做,避免名称冲突。

    顺便说一下, void main() {}不是标准C(假设您的程序在托管环境中运行,即在操作系统之上运行)。 使用int main(void) { return 0; } 而是。 参考。 另一个。

    您已声明一个与全局变量同名的局部变量,通过使i (在声明了您的局部变量的同一范围内使用)隐藏它,引用您的局部变量而不是全局变量。

    对此最自然和合理的解决方案是:尽可能避免一直这样做。

    这是变量范围。 如果声明了多个相同类型的变量,则将访问具有最接近范围的运算符。

    范围解析将在编译时发生。 当编译器在代码中访问它时搜索任何变量声明时,它将首先查看最近的范围然后上升。 最后将访问全局变量。

      以上就是c/c++开发分享与C中的全局变量和本地变量相同相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/522117.html

      (0)
      上一篇 2020年12月9日
      下一篇 2020年12月9日

      精彩推荐