2012-04-13 53 views

回答

3

總之,C代碼與指針涉及被編譯到與地址處理CPU的操作碼 - 這樣的數字 - 即上的值進行操作的物理機器代碼,是簡單地從一個不同的指令代碼對地址(指針)執行操作。

現實比當然更復雜。您可以詳細說一下在這個堆棧溢出問題 How do you get assembler output from C/C++ source in gcc?

從更深的層面按照說明情況不同(小)C程序看,操作系統和CPU虛擬化物理內存 - 這樣,在請求存儲器的指令硬件地址x使用虛擬查找表從物理地址y獲取內存 - 這是一種現代化的開發,支持內存隨機化等安全性和內存管理功能。

1

你問這整本書已經寫的問題,但這裏的要點是:

  1. 通過取消引用指針。指針內存中的一個地址,因此該指針正好描述了檢索它指向的數據的位置。
  2. 因爲代碼告訴編譯器(通過*)變量包含一個指針。編譯器將該信息轉換爲代碼,以告知處理器確切要做什麼。處理器沒有「知道指針的內容是地址而不是數據本身;」它只是作爲機器代碼指示它。
  3. 一步一步的過程是什麼?