我知道: char *是一個指向char的指針。 和 int *是一個指向int的指針。char *的大小與int *的大小相同嗎?
所以,我想確認以下兩件事情:
所以現在假設我是32位的機器上,那麼這意味着內存地址是32位寬。 因此,這意味着char *和int *的大小都是32位(4個字節),對不對? 也是char * *的大小也與int *的大小相同?
假設我有: int * ptr;
因此現在做*((char * *)ptr)= 0x154與*((int *)ptr)= 0x514相同,對嗎? (0x514只是任意的隨機存儲器地址)
平臺:我在x86上。
P.S .:我知道類型轉換不是一種建議的編碼方式。但我正在做內核編碼,因此我必須進行類型轉換!
即使標準沒有說出來,我懷疑它會很容易找到一個實際上不同的環境。 – Mysticial 2013-02-16 17:40:12
儘管它們的尺寸在實踐中相同,但它們的對齊要求不是。 – DCoder 2013-02-16 17:41:19
如果您正在執行「內核編碼」,那已經限制了代碼可以運行的平臺數量。檢查OS規範支持的內容。 – 2013-02-16 22:01:36