c语言关于地址的问题


#include

int main(){
    int arr[5];
    printf("%d\n",&arr[0]);
    printf("%d\n",&arr[1]);
    printf("%d\n",&arr[1]-&arr[0]);//为什么不是4,而是1 
    return 0;
} 

请问两个地址相减为什么不是4,而是1,谢谢你。

img

这个1不是1个字节的意思,是一个int的意思
指针想减的差值,跟这个指针的类型有关。如果是 char *想减,那么是以字节为单位,如果是int *想减,那么是以4个字节为单位

楼上是对的