2013-02-28 92 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); 
         } 
        } 
    } 
    

    這不是很好的代碼,但有時代碼生成少做一些毫無意義的東西,但使用嵌套變量聲明有點類似。