2013-02-28 44 views
1

我听说过当前范围中无法访问的活动变量的概念。这三个例子我能想到的把我的头顶部有:在当前范围中无法访问的变量C

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

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

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

我对此有两个问题。我理解这个概念吗?如果我这样做,标准C中还有其他的例子吗?

+2

我想你可以在所有程序中添加一个调用你的:) – paulsm4 2013-02-28 05:43:25

+0

以上堆栈变量我不知道第一个真正重要的,因为'ptr'还是它只是指向别处的变量。那里无法访问的内容实际上只是内存位置,没有变量代表它。 – 2013-02-28 05:46:29

+0

不在范围内的文件? – perreal 2013-02-28 06:02:16

回答

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

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