我正在使用教程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]
?如果我们不使用引用,是否可以以不同的方式解决此问题?
答案 0 :(得分:6)
因为C ++中的数组是从零开始的,即从0
开始到n-1
结束。 var[MAX]
是超出数组末尾的元素,因此超出界限并访问它是未定义的行为。
var { 10, 100, 200 }
index ^0 ^1^ ^2^ ^3?