您的位置:首页 > 编程语言 > C语言/C++

C语言 地址相减

2013-12-19 20:47 197 查看
举一个小例子说明一下,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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: