2012-02-08 53 views
4

那麼,對於這個問題抱歉,更像是一個普通的文化(沒有找到準確的答案)。指針的大小,如果這個大小取決於體系結構

如果我有像

char * Field 

void * Field 

double pointers 
  • 指針的大小是一樣的嗎? (據我所知,從大學時間它是4個字節,但...)
  • 指針的大小相同取決於CPU的體系結構?
  • 如果我指向一個數據結構,指針本身的大小是一樣的,不是嗎?

假設在C例子(我會更願意相信這將是不直接處理指針其他語言的相同)

回答

3

指針的大小是一樣的嗎? (據我從大學記得是4個字節,但是......)

不一定是相同的,而不一定4個字節:Are all data pointers the same size in one platform for all data types?

是指針的根據相同的大小CPU的架構?

它從建築到建築各不相同。即使在相同的硬件上,它也可以從操作系統到操作系統(例如32位與64位)有所不同。

如果我指向一個數據結構,指針本身的大小是一樣的,不是嗎?

同樣,不一定:Are all data pointers the same size in one platform for all data types?

+0

有趣和令人困惑。我會研究更多,特別是尺寸差異。謝謝。 – Kani 2012-02-08 16:48:09

1
  1. 是,指針的大小不依賴於它指向的數據類型。 編輯:顯然不正確。見aix的答案。

  2. 指針大小可能取決於CPU,內存模型,運行時和/或操作系統。

  3. 同樣,指針的大小不取決於它指向的數據類型。 編輯:顯然不正確。見aix的答案。

您可以很容易地找出帶有sizeof()構造的指針的大小。

+2

檢查aix的答案。 – m0skit0 2012-02-08 16:05:58

+0

+1提及內存模型。 – 2012-02-08 16:08:02

0

在大多數系統中,指針的大小是相同的,但C不能保證。它只是承諾你足夠寬以包含每個指針類型(除了指向函數的指針)。是的 - 這取決於CPU。 (在64位系統中,指針通常是8個字節)

0

1)指針的大小對於所有指針類型都是相同的。

2)通常在32位體系結構中它將是4個字節,而在64位體系結構中它將是8個字節。

3)無論你指向什麼,指針的大小都是一樣的。