与常规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;
}
答案 0 :(得分:8)
没有“增强的循环”这样的东西。这是“范围 - for循环”:
for (int i : iArr)
cout << &i << " ";
它会为您提供不同的地址,因为int i : iArr
正在创建iArr
的每个元素的副本,并将其分配给i
。
如果您想引用到原始元素,则应使用
for (int& i : iArr)
cout << &i << " ";