C中的VOID数据类型

anp*_*355 -1 c type-conversion

如果我使用声明任何变量void,它会给出错误但是sizeof(void)1.这是什么原因?

void var; // it gives error
printf("sizeof(void) = %d", sizeof(void)); //prints 1
Run Code Online (Sandbox Code Playgroud)

oua*_*uah 6

sizeof (void)在C中无效,并且允许在GNU C中作为允许指针算术的扩展void *.

来自gcc 文档:

在GNU C中,指向void的指针和指向函数的指针都支持加法和减法操作.这是通过将void或函数的大小视为1来完成的.[...]结果是sizeof也允许在void和函数类型上,并返回1.