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。
例:
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。
相关文章推荐
- C语言 地址相减
- 【c语言】 写一个函数返回参数二进制中 1 的个数
- 12个有趣的c语言面试题
- C语言 字符数组和字符串指针的理解
- C语言竞赛题 - 将数表示成质因子成…
- arm 变量或数组放置在指定地址
- 【C语言】04 printf和scanf函数
- C语言中,为什么指针表达式的值+1.对应的地址值却+4?/为什么两个数组元素的地址相减之差不为地址之差?
- 常见端口地址 和易受攻击的地址
- 【c语言】 输出一个整数的每一位
- kindle3 注册地址,美国地址…
- C语言地址相减
- c语言的 地址运算符 & 和 指针运算符* 的区别
- 查找 MAC 地址
- C语言 链表操作
- RC4算法 N=3(C语言)
- 【c语言】 将数组A中的内容和数组B中的内容进行交换。(数组一样大)
- (C小程序)用C语言求 最大公约数…
- Eclipse Helios(3.6.2)下载地址
- 【C语言】06 数组