指针操作会产生意外结果

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

我期望下面的代码显示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;
}
c pointers subtraction
2个回答
3
投票

首先,更改


0
投票

您是正确的,两个指针相距4个字节。而且,如果您减去两个整数,您将得到4。但是&a[1]&a[0]的类型为float *Pointer arithmetic in C考虑到所指向事物的大小,因此&a[1]-&a[0]为1。

© www.soinside.com 2019 - 2024. All rights reserved.