我最近了解到 sizeof
不是一个函数,它实际上是在编译时计算的。
但是我还是没弄明白sizeof(*NULL)
是怎么等于1的。
编辑:我在这里专门谈论 gcc。
最佳答案
这取决于编译器和标准库。对于 GCC 和 glibc,NULL
被定义为 (void*)0
并且 GCC 有 an extension允许使用 sizeof(void) == 1
对 void
指针进行指针运算。如果没有此扩展,编译器会产生错误。
标准库也可以将 NULL
定义为 0
。在这种情况下,sizeof(*NULL)
也是非法的。
关于c - 在 32 位 C 编译器上,sizeof(*NULL) 如何等于 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49541459/