是否有任何文檔指定應用於C中文字的指針轉換的含義?理解應用於文字時C指針轉換的語義
例如:
int *my_pointer = (int *) 9
這是編譯器的依賴性或標準的一部分嗎?
編輯:刪除誤導性註釋根據下面的評論,謝謝。
是否有任何文檔指定應用於C中文字的指針轉換的含義?理解應用於文字時C指針轉換的語義
例如:
int *my_pointer = (int *) 9
這是編譯器的依賴性或標準的一部分嗎?
編輯:刪除誤導性註釋根據下面的評論,謝謝。
int *my_pointer = (int *) 9
這並不指向文字9
。它將文字9
轉換爲指向int
的指針。 C說從整數到指針類型的轉換是實現定義的。
int *my_pointer = &(int) {9};
這樣做。它使my_pointer
指向int
值爲9
的對象。
實際上可以嗎?那個int對象的存儲是什麼? – 2013-04-20 10:56:04
@KerrekSB這是一個複合文字,如果在文件範圍聲明'my_pointer'並且在塊範圍聲明'my_pointer'則自動存儲時間是靜態的。 – ouah 2013-04-20 13:34:36
那麼如果它是自動的,它的生命和分號呢? – 2013-04-20 13:35:42
指向指針轉換的整數和整數的指針是實現定義的(參見C標準的附錄J)。
有些情況下我們需要直接指定端口的地址,比如嵌入式系統。 – BLUEPIXY 2013-04-20 10:34:58
該標準沒有說必須有地址9,所以這是非標準的。 – 2013-04-20 12:58:16