[HELP] int型指针地址相减的问题
程序员面试宝典二P70有个问题。========================================
int a[3];
a[0]=0; a[1]=1; a[2]=2;
int *p, *q;
p=a;
q=&a[2];
cout << a[q-p] << '\n';
========================================
按照书里的解释,p的地址指向a(即a[0]),q的地址指向a[1](我觉得书上写错了,应该是a[2])
然后书里还让你试着执行: cout << p 和 cout << q
得出: 0x22ff68 和0x22ff70,相差为2。
可是按我的理解,a是int型的数组,应该占4位,相差应该为8才对。
我试着写了段程序,输出: cout << p 和 cout << q
结果是0013FF74 和 0013FF7C,和我理解的一样。
可是不解的是我接着输出: cout << q-p,结果居然是2,为什么不是8呢?
麻烦哪位大侠帮我分析分析,谢谢。