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