指向数组的指针,为什么这是最后一个元素的地址?

时间:2015-07-13 10:19:44

标签: c++ pointers

我正在使用教程point.com示例。

int  var[MAX] = {10, 100, 200};
int  *ptr;

// let us have address of the last element in pointer.
ptr = &var[MAX-1];
for (int i = MAX; i > 0; i--)
{
    cout << "Address of var[" << i << "] = ";
    cout << ptr << endl;

    cout << "Value of var[" << i << "] = ";
    cout << *ptr << endl;

    // point to the previous location
    ptr--;
}
return 0;

那么,为什么&var[MAX - 1]以及为什么不&var[MAX]?如果我们不使用引用,是否可以以不同的方式解决此问题?

1 个答案:

答案 0 :(得分:6)

因为C ++中的数组是从零开始的,即从0开始到n-1结束。 var[MAX]是超出数组末尾的元素,因此超出界限并访问它是未定义的行为。

var   { 10, 100, 200 }
index   ^0  ^1^  ^2^   ^3?