首页 >后端开发 >C++ >`sizeof(void)` 是否告诉我们 C 或 C 中 void 类型的大小?

`sizeof(void)` 是否告诉我们 C 或 C 中 void 类型的大小?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-03 20:05:27982浏览

Does `sizeof(void)` tell us the size of the void type in C or C  ?

难以捉摸的 void 的大小

问题:

我们能否确定 C 或 C 中 void 类型的大小?考虑下面的代码:

void *p = malloc(sizeof(void));
扩展:如果 sizeof(void) 在 GCC 中返回 1,如果 p 最初持有,指针 p 在 p 之后会递增到 0x2346 0x2345?

答案:

void 类型从根本上来说缺乏大小,使得表达式 sizeof(void) 毫无意义并导致编译错误。在 C 中,这是严格禁止的。

意外发现:

令人惊讶的是,在 GNU C 中编译时,sizeof(void) 的结果为 1。但是,这种行为是有限的到 GNU C 并且在 C 或其他中没有观察到

含义:

尽管 GNU C 中有意外的返回值,但值得注意的是 void 仍然是没有大小的类型。指向 void 的指针(例如示例中的 p)是真正的指针,并且可以像任何其他指针一样递增。扩展问题中的增量操作将按预期运行,p 指向下一个可用内存地址。

以上是`sizeof(void)` 是否告诉我们 C 或 C 中 void 类型的大小?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn