我还没有找到能回答我困惑的部分的问题,对于有人回答了我,我深表歉意。
我对于此for循环中发生的事情感到困惑,它如何遍历地址?
int arr[] = {1,2,3,4,5};
for(const int &arrEntry : arr){
cout << arrEntry << " ";
}
最佳答案
也许&
的位置引起困惑。请记住,C++不在乎放置空格的位置。由于此:for (const int &arrEntry : arr)
是在循环内使用的新变量arrEntry
的声明,因此在其名称左侧使用&
意味着我们正在定义一个具有引用类型的对象,特别是arrEntry
是对a的引用const int
。这意味着在循环中,arrEntry
不是您要循环访问的数据的副本,而只是对其的引用。 const
表示您无法更改其值。
如果这不是声明,并且以前已定义arrEntry
,则表达式&arrEntry
确实将采用arrEntry
的地址。在循环主体中,已经定义了arrEntry
,因此您可以使用&arrEntry
获取其地址
int arr[] = {1,2,3,4,5};
for(const int &arrEntry : arr){
cout << arrEntry << " "; // prints a const int
cout << &arrEntry << " "; // prints a pointer to a const int
}