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

C++调用output输出Bus结构体Current值为16 初始化不生效问题排查

问题排查与修复说明

根因分析

  • C++ 栈上分配的普通局部结构体变量未手动初始化时,成员取值为栈内存残留的未定义脏数据,你观测到的Current为16、Max为0都是随机的运行时残留值,没有固定规律。
  • 代码逻辑错误:你编写的init初始化函数从未被调用,main函数中定义Bus s后直接调用output打印未初始化的成员,自然不符合预期。

修复方法

你可以任选以下一种方案修复:

方案1:手动调用初始化函数

在main函数中定义结构体变量后、打印前调用你写的init函数即可,修改后的main代码如下:

int main()
{
    struct Bus s;
    init(s);
    output(s);
    return 0;
}

方案2:给结构体添加默认构造函数(C++ 更推荐的写法)

直接给Bus结构体添加默认构造函数,定义变量时会自动完成初始化,不需要额外调用独立的初始化函数,修改后的结构体定义如下:

struct Bus
{
    int Current;
    int Max;
    Bus() : Current(0), Max(0) {}
};

该方案下原有main函数无需修改,创建s实例时会自动将成员赋值为0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:54:07