You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请问std::cout << &i << 打印的是i的地址还是num容器中元素的地址?

范围for循环中引用地址的打印结果说明

打印的是容器num中对应元素的地址,而非引用i自身的地址。

在C++中,引用本质是目标变量的别名,它不会占用独立的内存空间(编译器会直接将引用关联到绑定的对象)。当对引用i执行&i取地址操作时,编译器会直接返回该引用所绑定的容器元素的内存地址。

你可以通过对比验证:在代码中直接打印容器元素的地址,会和范围for循环里&i的输出完全一致。比如补充如下测试代码:

#include <iostream>
#include <vector>

int main ()
{
    std::vector<int> num {1, 2, 3};
    
    // 直接打印容器元素的地址
    std::cout << "容器元素地址:\n";
    for (size_t idx = 0; idx < num.size(); ++idx) {
        std::cout << &num[idx] << "\n";
    }
    
    // 范围for循环打印引用的地址
    std::cout << "\n引用i的地址:\n";
    for (const int &i : num)
    {
        std::cout << &i <<"\n";
    }
 }

运行后两组地址会完全匹配,这就证明了&i获取的是容器中对应元素的地址。

内容的提问来源于stack exchange,提问作者user25173387

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 10:44:55