例:
int a[3];
int *s1,*s2;
char *t1,*t2;
a[0]=1;a[1]=2;a[2]=3;
s1=a;
s2=&a[2];
s2-s1=?
t1=(char*)a;
t2=(char*)&a[2];
t2-t1=?
解析: s2-s1=2; t2-t1=8;why?
C语言中的地址相减,其实并不是,我们想象中的直接相减的结果就是答案。其实,结果还和减数与被减数有关的,具体求解办法如下公式:
((void*)pAddr1 - (void*)pAddr2)/sizeof(type),type即是 所指的类型。所以,如果两个整数地址相减 ,则需要在相减的结果基础上再除以4,所以就是2了,同理可以得出两个char类型地址相减 结果是8。