我正在使用教程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;
Run Code Online (Sandbox Code Playgroud)
那么,&var[MAX - 1] 为什么不&var[MAX]呢?如果我们不使用引用,是否可以以不同的方式解决此问题?
因为C++中的数组是从零开始的,即从...开始0和结束n-1.var[MAX]是超出数组末尾的元素,因此超出范围并访问它是未定义的行为.
var { 10, 100, 200 }
index ^0 ^1^ ^2^ ^3?
Run Code Online (Sandbox Code Playgroud)