4

可能重复:
如何访问 C 中的阴影全局变量?

如果有同名的局部变量,如何访问 C 中的全局变量?

     int m=20 ;  
     void main()  
     {  
       int m=30;  
     }   
4

4 回答 4

5

在 C 中,您可以。当然,这只是琐事,你不应该在现实生活中这样做。

声明某事extern可以在任何地方进行,并且总是将声明的变量链接到该名称的全局变量。

#include <stdio.h>

int i = 3;

int main( int argc, char **argv ) {
    int i = 6;

    printf( "%d\n", i );
    { // need to introduce a new scope
        extern int i; // shadowing is allowed here.

        printf( "%d\n", i );
    }
    return 0;
}

在 C++ 中,全局始终以::i.

于 2012-12-08T10:42:29.077 回答
4

在C中没有办法。实际上,引入一个额外的范围并extern声明可以,请参阅@Potatoswatter 的答案。

::在 C++ 中,您可以使用(如)在全局命名空间中查找标识符,::m=15顺便说一下,它与用于访问“常规”命名空间(std::cout...)成员的运算符相同。

此外,它是int main().

于 2012-12-08T10:30:24.807 回答
2

在C中你没有。给他们一个不同的名字,无论如何这会令人困惑和不好的做法。

于 2012-12-08T10:28:51.143 回答
0

无论如何,相同的名称都是不好的做法,直到重新定义 m 您正在以任何方式访问全局变量

 int m=20 ;  
 void main()  
 { 
   print m // 20 would be printed here .
  // max you can do 
   int m=30;  
 }
于 2012-12-08T10:31:53.123 回答