通过其地址访问C中的位字段

时间:2011-11-24 14:19:17

标签: c pointers bit-fields

不允许使用其地址访问C中的位字段的原因是什么,是因为它可能不是非系统字对齐的地址..?或者因为在一个字节内得到位的地址没有意义......?(因为这种类型的指针运算会很尴尬吗?)

3 个答案:

答案 0 :(得分:6)

比特没有地址。这就是为什么你不能通过地址来引用它们。寻址的粒度是char

我猜测的原因是该语言的设计与其定位的架构相匹配,而且我知道没有机器允许对各个位进行寻址。

答案 1 :(得分:3)

C中可寻址内存的最小单位是char,因为这对应于大多数CPU架构中可寻址内存的最小单位。 * 它没有意义谈谈有点地址。

<小时/> *可以想象一个假设的机器允许寻址各个位,但它会非常深奥。

答案 2 :(得分:1)

在c中,最小的可寻址内存单元被认为是字节。指针指向一个可以是任何data_type的内存位置(指针也是另一个变量)。以字节为后退的位没有任何地址,而是确实有位位置。

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