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

C++打印结构体地址时输出异常值而非预期内容的问题求解

C++ 结构体地址打印异常问题解决

错误诱因

  • 你编写的print_address函数内部额外定义了未初始化的局部StreetAddress类型变量s,全程没有使用传入的有效address参数
  • 局部变量s的house_number为未初始化的int类型,读取时会输出内存中的随机垃圾值,street_name为默认初始化的空字符串,因此无法输出预期的地址内容

修复方案

直接删除多余的局部变量s定义,使用传入的address参数读取成员值即可,修正后的函数实现如下:

void print_address(StreetAddress address, bool number_first)
{
   if(number_first)
      cout << address.house_number << " " << address.street_name;
   else
      cout << address.street_name << " " << address.house_number;
}

可选优化

可以将结构体参数改为const引用传递,避免不必要的结构体拷贝开销,修改后的函数声明与实现如下:

// 函数声明修改
void print_address(const StreetAddress& address, bool number_first);

// 函数实现修改
void print_address(const StreetAddress& address, bool number_first)
{
   if(number_first)
      cout << address.house_number << " " << address.street_name;
   else
      cout << address.street_name << " " << address.house_number;
}

修改后运行即可输出和预期一致的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:18:02