0

我对指针有一点疑问,请帮助我..

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?

提前致谢!!

4

1 回答 1

1

如果您尝试使用指针获取两个数组元素之间的差异,则需要取消引用指针:

i = *py - *px;

您编写它的方式是计算两个地址之间的差异,应该是 5,除非您将指针转换为void *,在这种情况下它将是5 * sizeof(int)(不确定您是在 32 位还是 64 位系统 - 答案会有所不同)。

哦,x[]无论如何你都没有初始化,所以你的结果可能有点......随机......

于 2013-02-19T16:19:31.247 回答