指针算术(指向数组)

时间:2013-02-19 15:49:44

标签: arrays pointers

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

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 ??

提前感谢!!

1 个答案:

答案 0 :(得分:1)

如果您尝试使用指针来区分两个数组元素,则需要取消引用指针:

i = *py - *px;

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

哦,你还没有初始化x[],所以你的结果可能有点......随机......