可能重复:
如何访问 C 中的阴影全局变量?
如果有同名的局部变量,如何访问 C 中的全局变量?
int m=20 ;
void main()
{
int m=30;
}
在 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
.
在C中没有办法。实际上,引入一个额外的范围并extern
声明可以,请参阅@Potatoswatter 的答案。
::
在 C++ 中,您可以使用(如)在全局命名空间中查找标识符,::m=15
顺便说一下,它与用于访问“常规”命名空间(std::cout
...)成员的运算符相同。
此外,它是int main()
.
在C中你没有。给他们一个不同的名字,无论如何这会令人困惑和不好的做法。
无论如何,相同的名称都是不好的做法,直到重新定义 m 您正在以任何方式访问全局变量
int m=20 ;
void main()
{
print m // 20 would be printed here .
// max you can do
int m=30;
}