2017-05-04 16 views
-4

ループの範囲は、通常のforループとは異なるアドレスを提供しています。 拡張forループはどのように使用できますか?C++ forループと通常のforループとが異なる

iArrアドレス:011bf7cc

レンジループアドレスについて:ループアドレスの011bf79c 011bf79c 011bf79c

正規:011bf7cc 011bf79c 011bf7d4

#include <iostream> 
#include "TestingConstructors.h" 
#include <Windows.h> 

using namespace std; 


int main() { 
    int i, j, *i1, *i2; 
    i = 1; 
    j = 3; 
    i1 = &i; 
    i2 = &j; 
    *i1 = 2; 
    int iArr[3] = { 1,2,3 }; 
    cout << &iArr << endl << endl; 
    for (int i : iArr) 
      cout << &i << " "; 
    cout << endl << endl; 
    for (int i = 0; i < ARRAYSIZE(iArr); i++) 
      cout << &iArr[i] << " "; 
    system("pause"); 
    return 0; 
} 
+4

を使用する必要がありますか? –

+1

'i'のアドレスはループ中に変更されません。 – crashmstr

+0

uhm mistakeそれを修正する –

答えて

8

"拡張forループ" のようなものはありません。これは、「範囲-ためのループ」です:

for (int i : iArr) 
     cout << &i << " "; 

int i : iArriArrのすべての要素のコピーを作成し、iに割り当てているので、それはあなたに別のアドレスを与えます。

あなたは、元の要素にを指すしたい場合は、なぜあなたはイタリックであなたのコードを入れてください

for (int& i : iArr) 
     cout << &i << " ";