gpt4 book ai didi

c - 为什么我们不能访问我们在结构中填充的位?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:56:38 25 4
gpt4 key购买 nike

我的问题是我们进行填充以对齐结构。

typedef struct structb_tag
{
char c;
int i;
} structb_t;

这里我们使用 8 个字节。为什么我们不能使用那么多的 3 个字节?

最佳答案

Why cant we use the 3 bytes

你可以。

为此,测量您的实现为 struct 分配的大小,然后将其添加一个恰好测量大小的字符数组,这样就可以了。

假设这个

typedef struct structb_tag
{
char c;
int i;
} structb_t;

是用8个字节创建的,即sizeof(structb_t)的计算结果为8,改成如下

typedef union unionb_tag
{
char bytes[8];
struct
{
char c;
int i;
} structb;
}

就便携性和稳健性而言,更可靠的是:

typedef union unionb_tag
{
struct structb_tag
{
char c;
int i;
} structb;
char bytes[sizeof (struct structb_tag)];
}

关于c - 为什么我们不能访问我们在结构中填充的位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36997310/

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