我还没有找到能回答我困惑的部分的问题,对于有人回答了我,我深表歉意。

我对于此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
}

10-04 12:10