#include<stdio.h>
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,谢谢你。
#include<stdio.h>
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,谢谢你。
这个1不是1个字节的意思,是一个int的意思
指针想减的差值,跟这个指针的类型有关。如果是 char *想减,那么是以字节为单位,如果是int *想减,那么是以4个字节为单位