我对下面的代码有些怀疑

  #include<stdio.h>
   int i=6;
    int main()
     {
      int i=4;
      {
       extern int i;
       printf("%d",i); //prints 6
      }
      printf("%d",i); //prints 4
     }


我们知道extern关键字表示编译器,该变量位于外部。所以问题是为什么extern关键字访问全局i变量而不访问主函数中的i变量?我当时认为必须存在矛盾,因为两个变量都可以作为全局变量供内部括号使用。所以extern关键字是否访问函数外部的变量,还是访问大括号之外的变量。

最佳答案

extern并不意味着超出当前范围,而是意味着具有外部链接的对象。自动变量从不具有外部链接,因此您的声明extern int i不可能引用它。因此,它就像自动变量一样隐藏了全局变量。

关于c - 当全局变量和局部变量具有相同名称时访问全局变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10944863/

10-11 22:44
查看更多