2011-11-24 43 views
2

不允許使用其地址訪問C中的位字段的原因是什麼,是因爲它可能不是不是系統字對齊的地址。或者因爲在一個字節內得到位的地址是沒有意義的...?(導致這種類型的指針算術會變得難以理解)通過地址訪問C中的位字段

+0

你會期望「位地址」有什麼價值? –

+0

您可以通過請求它所在的字符來修改位,然後使用位掩碼操作。 – Yuri

回答

3

C中可尋址內存的最小單位是char,因爲這對應於大多數CPU架構上最小的可尋址內存單元。 *討論一下地址是沒有意義的。


*可以想象一個假設的機器,允許尋址各個位,但它會是非常深奧的。

6

位沒有地址。這就是爲什麼你不能通過地址引用他們。尋址的粒度是char

我想這是因爲該語言的設計與其所針對的體系結構相匹配,而且我知道沒有允許尋址各個位的機器。

1

在c最小的可尋址內存單元被認爲是一個字節。指針指向一個可以是任何data_type的內存位置(指針也是另一個變量)。在字節後退位沒有任何地址,而是他們有一個位的位置。

所以基本上你不能指向特定位,你可以指向一個字節或整個字。