2017-02-15 72 views
0
int* arr = new int[30](); //30 is random serving the example's purposes 

while(<insert check here that uses the arr pointer>){ 

    cout<<*arr<<endl; 

    arr++; 
} 

這是我試驗使用指針的技巧,我今天一直在研究這一點。我在while子句中使用了許多不同的檢查,但沒有正確地執行(主要是以無限循環或seg錯誤結束)。 所以我的問題可以做到這一點,或標準的循環方法是唯一的方法嗎?使用自己的指針遍歷數組元素

+2

注意,通過增加'arr'中,只有指針指向你的內存分配,你已經失去了無需付出極大努力就「刪除」它的能力。在開始遞增之前進行復制。 – user4581301

回答

1

那麼,有很多方法可以做到這一點。

添加

int *end = arr + 30; 
while (arr < end) 

當然,通過增加「改編」,你正在失去的指針數組 - 但是你已經知道了:-)

+0

我想當我增加ARR我只是移動到陣列的下一個元素...爲什麼我失去了指針?其次你的答案很好,但是我試圖在不使用數組大小​​的情況下進行檢查,只需單獨檢查指針即可 – JimS

+0

C++不會跟蹤數組的大小 - 因此您需要手動執行此操作。 – joeking

+0

所以沒有指示指針到達數組的末尾的東西?類似於字符串中的空終止符。 – JimS