我对指针有一点疑问,请帮帮我..
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;
}
在上面的程序中,你得到'i'的值作为数组(内存)的整数等价的差除以2(10/2 = 5)。为什么它不仅仅是差异,即10 ??
提前感谢!!
答案 0 :(得分:1)
如果您尝试使用指针来区分两个数组元素,则需要取消引用指针:
i = *py - *px;
你编写它的方式,你计算两个地址之间的差异,应该是5,除非你把指针指向void *
,在这种情况下它将是5 * sizeof(int)
(不是确定如果您使用的是32位或64位系统 - 答案会有所不同。
哦,你还没有初始化x[]
,所以你的结果可能有点......随机......