C语言 地址相减

来源:互联网 发布:人工语音软件 编辑:程序博客网 时间:2024/06/03 14:49
举一个小例子说明一下,C中地址相减的结果是比较有趣的。
例:
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。

0 0
原创粉丝点击