2015-07-13 51 views
2

我與輔導工作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]?如果我們不使用參考,是否有可能以不同的方式解決這個問題?

回答

6

因爲在C數組++是從零開始的,即,從0和結束n-1啓動。 var[MAX]是過去陣列的端部的元素,因此是外的邊界和訪問它是未定義的行爲。

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

不*訪問*它,但[你**可以**有一個指針](http://stackoverflow.com/a/988220/2297448),只要你不取消引用它。 – CoffeeandCode

相關問題