OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3469|回复: 8

地址相减的问题?

[复制链接]

10

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-11-27
在线时间
11 小时
发表于 2017-2-10 16:23:27 | 显示全部楼层 |阅读模式
int a[3] = {0,1,2}

int *p,*q;

p = a

q  = &a[2];

请问一下,q-p的值为什么等于2呢?

printf(" %#X",p)    //p= 0x402000
printf(" %#X",q)    //q= 0x402008

两个地址相减的结果是不是为空间的个数你呢?
(0x402008 - 0x402000) / int  = 8/4 = 2

求大神解释一下,谢谢了!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2017-1-1
在线时间
28 小时
发表于 2017-2-13 21:17:03 来自手机 | 显示全部楼层
为什么p+1不等于0x402000,脑子转不动了
回复 支持 1 反对 0

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2017-2-13 21:39:21 | 显示全部楼层

因为一个字节放不下一个int变量
回复 支持 1 反对 0

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2017-2-10 16:58:57 | 显示全部楼层
p = a就等于p = &a[0],
a[0]和a[2]地址肯定相差2个int大小啊
回复 支持 反对

使用道具 举报

10

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-11-27
在线时间
11 小时
 楼主| 发表于 2017-2-10 17:20:34 | 显示全部楼层
呵呵,我看结果是等于2,猜到是那样的
只是不明白 (0x402008 - 0x402000) = 0x000008
我知道是两个int的空间,只是想了解编译器会把它处理为整数2吗?
回复 支持 反对

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2017-2-10 17:27:53 | 显示全部楼层
hjhand 发表于 2017-2-10 17:20
呵呵,我看结果是等于2,猜到是那样的
只是不明白 (0x402008 - 0x402000) = 0x000008
我知道是两个int的 ...

小伙子,你可以自定义数据结构数组看看
回复 支持 反对

使用道具 举报

15

主题

184

帖子

0

精华

高级会员

Rank: 4

积分
647
金钱
647
注册时间
2014-4-29
在线时间
299 小时
发表于 2017-2-10 17:35:02 | 显示全部楼层
很好理解吧。对int* 型指针来说,p+1的结果是什么?
回复 支持 反对

使用道具 举报

10

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-11-27
在线时间
11 小时
 楼主| 发表于 2017-2-10 17:55:15 | 显示全部楼层
xianshasaman 发表于 2017-2-10 17:35
很好理解吧。对int* 型指针来说,p+1的结果是什么?

p 的结果是 0x402000 , p+1的结果是 0x402004  , p+2 的结果是 0x402008   

q = p + 2;

q - p = 2
呵呵,大脑短路,总是以为减出来是地址 0x000008啊
这样理解也对,谢谢了!
回复 支持 反对

使用道具 举报

7

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2017-1-1
在线时间
28 小时
发表于 2017-2-13 21:17:28 来自手机 | 显示全部楼层
0x402001
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 05:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表