指针运算(指向数组)
问题描述:
我的三分球已经一个小疑问,请帮我..指针运算(指向数组)
void main()
{
int x[10],*px=x,*py;
int i;
py = &x[5], i = py - (px);
cout << "\nThe value of px=x is:" << (int)px << "\n";
cout << "x[0]\t" << (int)x << "\n";
cout << "x[5]\t" << (int)&x[5] << "\n";
cout << "\nThe value of i=py-px is\n";
cout << i;
}
在上面的程序,你得到的“我”为一体的的差异值整数相当于数组(内存)除以2(10/2 = 5)。为什么它不仅仅是差异即10?
在此先感谢!
答
如果你想获得两个使用指针数组元素之间的差异,您需要取消引用指针:
i = *py - *px;
你有它编写的方式,你计算的区别两个地址应该是5,除非你把指针指向void *
,在这种情况下,它应该是5 * sizeof(int)
(不知道你是否在32位或64位系统上 - 答案会不同)。
哦,你不初始化x[]
反正,所以像你期望的sizeof(INT)= 2的结果可能会有点... ...随机
听起来。你能解释为什么你会期望结果是10吗? – 2013-02-19 15:57:17
好吧,假设你得到x [5]的内存整数eqv为'-24',x [0]为'-34'..那么px-py结果不是-24 + 34 = 10? – vpp 2013-02-19 16:05:32