2017-05-04 55 views
0

我得到了指針變量的存儲位置可以請人幫我有點困惑。指針變量存儲在哪裏以及編譯器如何訪問正常變量?

int *ptr; //where this pointer stored 
int p; //how compiler can access this variable(using address or what?) 

指針通過地址訪問什麼關於正常變量...?

請建議我去學習C最好的網站...

+1

[C中指針和全局變量的位置]的可能重複(http://stackoverflow.com/questions/3113668/location-of-pointers-and-global-variables-in-c) – rsp

+0

簡而言之* a指針是一個普通的變量,它保存一個地址作爲它的值*,而一個變量是一個標籤到一個內存地址,它保存一個直接值*。您可以取消指針以獲取指針所保存地址的直接值。 –

+0

我投票關閉這一問題作爲題外話,因爲所要求的信息的範圍是很容易發現的都在這裏,並在任何C手動或教程。 –

回答

1
  1. 存儲這個指針在哪裏呢?

的指針被存儲就像在存儲器中的任何其他正常的變量。確切位置在哪裏取決於它是否是一個局部變量,在這種情況下,它被存儲在堆棧或全局或靜態變量,在這種情況下,它被存儲在全局單獨的內存部分。

  • 編譯器可以如何訪問這個變量?
  • 不知道你的編譯器訪問這裏指的是什麼,但是你作爲一個程序員可以直接訪問變量,你可以在一個指針的地址存儲然後直接訪問它。

    a = p; //Direct access 
    
    int *ptr; 
    ptr = &p; 
    a = *ptr; // Access the variable indirectly. 
    

    至於你的第三個問題,推薦一個網站,它超出了StackOverflow的範圍。