2017-02-15 12 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欠点で終わってしまいます)。 私の質問はこれを行うことができますか、標準のfor-loopメソッドが唯一の方法ですか?独自のポインタを使用して配列要素を反復処理する

+2

注意を知っていました、そのメモリ割り振りに必要なポインタだけを使うと、極端な労力をかけずに '[削除]する機能が失われてしまいます。インクリメントを開始する前にコピーを作成してください。 – user4581301

答えて

1

これを行う方法はたくさんあります。

もちろん

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

を追加し、「ARR」インクリメントすることにより、あなたは配列へのポインタを失っている - しかし、あなたは、 `arr`をインクリメントすることであること、そのすでに:-)

+0

私は配列の次の要素に移動するarrをインクリメントすると思った...なぜ私はポインタを失っていますか?そして2番目の答えはいいですが、私はポインタだけをチェックするだけで配列のサイズを使わずにチェックをしようとします。 – JimS

+0

C++は配列のサイズを追跡しません - これを手動で行う必要があります。 – joeking

+0

したがって、ポインタが配列の最後に到達したことを示すものはありませんか?文字列のヌル終了のようなもの。 – JimS

関連する問題