为什么在gcc中允许使用空指针算法?

问题描述 投票:2回答:2

以下代码是使用gcc编译的,尽管void ptr算法不是标准的:

int main(){
 int a = 5;
 void* b = (void*) &a;
 b++;
}
c sizeof void pointer-arithmetic
2个回答
4
投票
gcc docs

[6.20 void和功能指针上的算术

在GNU C中,支持加减运算指向void的指针和指向函数的指针。这是通过将void或函数的大小视为1。

结果是sizeof和[函数类型,并返回1。

0
投票
例如,我在其中看到了很旧的旧代码

sizeof( char )

参数p的类型为memset( ( char * )p, 0, n );

所以看来这样做是为了向后兼容。
© www.soinside.com 2019 - 2024. All rights reserved.