sizeof(void)在C中等于1?

可能重复:
虚空的大小是多少?

大家好 ! 我正在使用gcc编译我的C程序,只是偶然发现sizeof(void)是C中的1个字节。

这有什么解释吗? 我一直认为它是零(如果它真的没有存储)!

谢谢 !

这是gcc的非标准扩展,但有一个基本原理。 当您执行指针运算时,添加或删除一个单位意味着添加或删除指向大小的对象。 因此将sizeof(void)定义为1有助于将void*定义为指向byte的指针(无类型内存地址)。 否则,当p为void*时,使用p+1 == p等指针算法会产生令人惊讶的行为。

标准方法是使用`char *用于那种目的(指向字节的指针)。

这是gcc的特定function – 请参阅http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Pointer-Arith.html#Pointer-Arith

要么

虚空的大小是多少?

通常你不要求sizeof(void)因为你从不使用void作为类型。 我猜你正在尝试的行为取决于具体的编译器。 在我的gcc上它也返回1。