理解全局变量的概念

时间:2013-09-17 19:43:00

标签: c

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

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

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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

int a=6;
int main()
{
  int a=5;
  printf("%d",a);
  {
    extern int a;
    printf("%d",a);
  }
}

答案 2 :(得分:1)

您可以这样做:

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

    {
        extern int x;
        printf("%d", x); // prints 8
    }
}

答案 3 :(得分:1)

在C时Local variables Have same Name as Global variables然后Local variable get highest priority.

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

如果你打印出局部变量的blcok那么将打印GLOBAL Value。

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

示例:

int i=20;
int get_global();
main()
{
int i=5;
printf("LOCAL=%d",i));
printf("GLOBAL=%d",get_global());
}
int get_global()
{
return i;
}