1

如果我们有一个全局定义的变量“x”和一个函数内部具有相同名称的另一个变量“x”。当我们打印“x”的值时,为什么我们总是得到函数内部分配的值?有什么方法可以打印全局变量值。

int x=8;
void testCode()
{
    int x=2;
    printf("%d",x); //prints 2
}
4

4 回答 4

5

在其他语言中,是的。在 C 中,无法在同一范围内访问全局。有一种方法可以声明嵌套范围(请参阅其他答案),它可以让您访问非静态全局,但不建议这样做 -不要这样做。如果要获取全局变量,不要用同名的局部变量隐藏。

于 2013-09-17T19:45:02.383 回答
1

您可以通过以下方式在本地打印全局:

int a=6;
int main()
{
  int a=5;
  printf("%d",a);
  {
    extern int a;
    printf("%d",a);
  }
}
于 2013-09-17T19:48:22.137 回答
1

你可以这样做:

int x = 8;
void testCode()
{
    int x=2;
    printf("%d",x); //prints 2

    {
        extern int x;
        printf("%d", x); // prints 8
    }
}
于 2013-09-17T19:48:41.647 回答
1

在 C 什么Local variables Have same Name as Global variables时候Local variable get highest priority.

这就是为什么我们在打印时总是获取局部变量值的原因。

如果您打印出局部变量的 blcok,则将打印 GLOBAL 值。

您可以通过调用另一个函数来打印全局值。您没有声明具有相同名称的局部变量

例子:

int i=20;
int get_global();
main()
{
int i=5;
printf("LOCAL=%d",i));
printf("GLOBAL=%d",get_global());
}
int get_global()
{
return i;
} 
于 2013-09-17T19:49:17.603 回答