sizeof(void)在C中等于1?

时间:2010-07-28 07:04:36

标签: c sizeof void

  

可能重复:
  What is the size of void?

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

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

谢谢!

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

答案 2 :(得分:0)

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