2012-07-25 62 views
0

可能重複:
Can a local variable's memory be accessed outside its scope?
Scope vs life of variable in C內存分配的局部變量用C

int *p; 

void foo() 
{ 
    int i = 5; 
    p = &i; 
} 

void foo1() 
{ 
    printf("%d\n", *p); 
} 

int main() 
{ 
    foo(); 
    foo1(); 
    return 0; 
} 

輸出:5(foo1()打印i的值)

注意:我在Linux上運行這個程序

據我所知,本地自動變量的範圍僅限於塊/函數的壽命。

  1. 在什麼內存段這個變量我在foo()獲取存儲?或者所有函數的局部變量都獲得商店的位置?
  2. 如何從另一功能訪問此功能?
+1

這已經被很多人問過了,請在發佈之前搜索網站。您也可以使用編輯窗格頂部的按鈕來組織您的問題,因爲您可以在chris編輯後立即找到它。詢問前請至少投入一點工作。 – 2012-07-25 06:30:01

回答

2

訪問*pfoo1()時,您正在調用未定義的行爲。 如果你加入這樣的功能:呼叫foo()foo1()之間

void do_very_little(void) 
{ 
    char buffer[] = "abcdef"; 
    puts(buffer); 
} 

並調用它,你可能會得到不同的輸出。這不能保證;關於未定義行爲的一個有趣的事情是,任何事情都可能發生,你沒有理由抱怨。