【发布时间】:2025-11-26 10:05:01
【问题描述】:
为什么auto 的基于范围的循环不显示地址?
for 循环:
for (int i = 0; i < s; i++) cout << &ar[i] << endl;
正常工作,但auto 的基于范围的循环不能:
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int ar[] = { 12,-23,0,1,2 };
int s = sizeof(ar) / sizeof(int);
int * m = &ar[0];
sort(&ar[0], m+ s);
for (auto m : ar)
cout << m << endl;
cout << endl;
for (auto m : ar)
cout << &m << endl;
cout << endl;
for (int i = 0; i < s; i++)
cout << &ar[i] << endl;
system("pause");
}
【问题讨论】:
-
因为在这种情况下
auto被推导出为int?你以为是什么? -
显式循环等效项是
... { auto m = ar[i]; cout << &m << ...