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

为什么C++代码运行后输出结果为0x7ffffcf9a010?

为什么这段C++代码输出的是内存地址0x7ffffcf9a010?

嘿,我来给你掰扯清楚为啥这段代码输出的是个内存地址哈~

先看你写的这段代码:

#include <iostream>
#include <string>
using namespace std;
int main() {
    string cars[4] = {"Volvo", "BMW", "Ford", "Mazda"};
    cars[0] = "Opel";
    cout << cars;
    return 0;
}

核心问题出在cout << cars;这一行:

  • 在C++里,数组名在绝大多数场景下会隐式转换成指向数组第一个元素的指针。这里的cars是string类型的数组,所以它会被转换成string*类型的指针,指向数组里第一个元素(也就是修改后的"Opel")的内存位置。
  • 而cout对于非char*类型的指针,默认行为就是输出指针本身存储的内存地址——也就是你看到的0x7ffffcf9a010(这个地址每次运行可能会变,因为栈内存的分配位置不是固定的)。

如果想输出数组里的所有字符串内容,得遍历数组才行,比如用范围for循环:

#include <iostream>
#include <string>
using namespace std;
int main() {
    string cars[4] = {"Volvo", "BMW", "Ford", "Mazda"};
    cars[0] = "Opel";
    // 遍历数组输出每个元素
    for (const auto& car : cars) {
        cout << car << " ";
    }
    return 0;
}

这样运行后就会输出:Opel BMW Ford Mazda。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 23:27:27