在C中当前范围内无法访问的变量

时间:2013-02-28 05:39:18

标签: c variables scope

我听说过在当前范围内无法访问的实时变量的概念。我能想到的三个例子是:

  1. ptr = malloc(size * sizeof(ptr_type); ptr = different_ptr;

  2. 被调用函数内部的静态变量,不再在范围内,或

  3. 一个不在外部的全局变量,在一个不再在范围内的文件中。

  4. 我有两个问题。我能正确理解这个概念吗?如果我这样做,标准C中还有哪些其他例子?

1 个答案:

答案 0 :(得分:2)

  1. 是的,您似乎准确理解了这个概念。

  2. 嵌套范围:

    void pointless(int x)
    {
        int y = x;
        if (y > 0)
        {
            int x = y + 1;  // This x means the argument is out of scope (hidden)
            if (x > 10)
            {
                 int y = x - 10;  // This y hides the previous y
                 printf("%d %d\n", x, y);
            }
        }
    }
    

    这不是很好的代码,但有时代码生成器会做一些毫无意义的事情,但使用嵌套的变量声明有点类似。