问题:
我们能否确定 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中文网其他相关文章!