我期望下面的代码显示4(因为浮点数是4个字节),但是它显示1。有人可以解释为什么会这样吗?
#include <stdio.h>
int main()
{
float a[4]={0.0,0.1,0.2,0.3};
printf("%d", &a[1]-&a[0]);
return 0;
}
首先,更改
您是正确的,两个指针相距4个字节。而且,如果您减去两个整数,您将得到4。但是&a[1]
和&a[0]
的类型为float *
。 Pointer arithmetic in C考虑到所指向事物的大小,因此&a[1]-&a[0]
为1。