gpt4 book ai didi

特定位大小的 C++ 指针

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:54:22 26 4
gpt4 key购买 nike

我的问题是关于指向奇数大小的内存块。

假设我有一个像这样声明的struct:

typedef struct{
int32 val1 : 29;
int32 val2 : 26;
char val3;
}MyStruct;

让我们假设在结构中声明特定的位字段是可取的(为什么我们要使用位字段不是问题)。

如果我想声明一个指向这些字段之一的指针,我可能会尝试这样的事情:

MyStruct test;
int32 *myPtr = &(test.val1);

除了这会产生错误“不允许使用位字段的地址”。

假设我们想要,有没有办法以这种方式指向这些字段?我知道 C++ 可能会将字段填充到下一个字节(在本例中为 32 位)。

最佳答案

在 C++ 中,最小的可寻址值的大小必须至少为 1 个字节。所以不,你不能用指针获取位域的地址。

C++03 标准 9.6 位域:
第 3 段:

...The address-of operator& shall not be applied to a bit-field, so there are no pointers to bit-fields. ....

关于特定位大小的 C++ 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11100443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com