地址相减的问题?

2019-10-15 03:03发布

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

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

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
hjhand
1楼-- · 2019-10-16 06:51
xianshasaman 发表于 2017-2-10 17:35
很好理解吧。对int* 型指针来说,p+1的结果是什么?

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

q = p + 2;

q - p = 2
呵呵,大脑短路,总是以为减出来是地址 0x000008啊
这样理解也对,谢谢了!
andycj
2楼-- · 2019-10-16 08:22
 精彩回答 2  元偷偷看……

一周热门 更多>