1

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

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

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

  3. 不在范围内的文件中的非外部全局变量。

我对此有两个问题。我是否正确理解了这个概念?如果我这样做,标准 C 中还有哪些其他示例?

4

1 回答 1

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);
            }
        }
    }
    

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

于 2013-02-28T06:11:24.417 回答