#include <stdio.h>
int main(void)
{
int a[100][200];
printf("%d %d %d\n",&a[0][1],&a[0][0],&a[0][1]-&a[0][0]);
printf("%x %x %d\n",&a[0][1],&a[0][0],(char*)&a[0][1]-(char*)&a[0][0]);
return 0;
}
运行结果是这样子的,我还是不理解为什么会这样
... ... 1
... ... 4
群上一个朋友这样解释:
地址相减是一个int大小,但是你声明了int,所以为1,你可以试试printf("%d %d %d\n",&a[0][1],&a[0][0],(char*)&a[0][1]-(char*)&a[0][0]);可能为4
因为地址里面的"-"号,所以计算的时候地址相减是4除以(sizeof(int))