gpt4 book ai didi

c - 为什么 struct 给出错误的 sizeof 和 void 指针

转载 作者:行者123 更新时间:2023-11-30 21:21:32 25 4
gpt4 key购买 nike

  1. 为什么 sizeof 给出错误的输出?
  2. 空指针是什么意思?为什么是4个字节?

在此代码中:

struct s1
{
int p;
void *q;
char r;
};
struct s2
{
int p;
char r;
void *q;
};
int main()
{
struct s1 s;
struct s2 r;
printf("%d %d",sizeof(s),sizeof(r));
printf("\n");
printf("%d %d %d",sizeof(int),sizeof(char),sizeof(void*));
return 0;
}

我得到的输出为 12,但我认为 sizeof 应该给出 9 作为答案。

我在很多帖子中听说过的这个填充是什么?

最佳答案

它没有给出错误的输出。系统上 int 的大小为 4,void 指针的大小也是 4,虽然 char 通常可以是 8 位长,但结构本身不会是 9 个字节长,因为大多数系统至少是 32 位,所以编译器将它们“填充”为 4 字节的倍数。void 指针只是一个可以指向任何内容的指针。

关于c - 为什么 struct 给出错误的 sizeof 和 void 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25518376/

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