2301_79712304 2024-06-18 01:52 采纳率: 88.9%
浏览 0
已结题

为什么查找后显示的是地址而非内容

img

img

img


如图,运行后显现的是地址而非内容,我应该怎么修改,能保证输出的是相对应的内容

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-06-18 01:52
    关注

    引自免费微信小程序:皆我百晓生

    从你提供的代码片段来看,你遇到了在C++中输出结构体成员时,得到的是地址而不是内容的问题。这通常是因为你在尝试输出指针变量时没有解引用它们,或者在某些情况下,可能是因为编译器默认输出了对象的地址而不是其内容。

    在你的代码中,有几处需要特别注意的地方:

    1. 当你输出p->namep->A11Nump->linjians时,确保p指向的结构体已经被正确初始化并且包含了有效的数据。
    2. linjians数组是struct Machin的一部分,当你试图输出它时,如果没有正确的索引或迭代方式,你将只看到它的起始地址。

    为了解决这个问题,你需要确保以下几点:

    • 在输出p->name之前,p必须是一个有效的指向struct Machin类型的指针,并且这个结构体中的name字段已经被赋值。
    • 同样地,对于p->A11Num,确保A11Num已经被初始化。
    • 对于p->linjians,由于它是一个数组,你需要循环遍历并输出每个元素的cliaonamesum字段。

    下面是一段修改后的代码示例,展示如何正确输出struct Machin的信息:

    // 假设p已经是一个指向struct Machin的有效指针
    // 输出机器名称
    cout << "名称:" << p->name << endl;
    
    // 输出当前可出库的机器数
    cout << "当前可出库的机器数:" << p->A11Num << endl;
    
    // 输出所耗材料名称及数量
    cout << "所耗材料名称:" << endl;
    for(int i = 0; i < 100; ++i) { // 假设最多有100个零件
        if(p->linjians[i].cliaoname[0] != '\0') { // 检查零件名称是否为空
            cout << p->linjians[i].cliaoname << " 数量: " << p->linjians[i].sum << endl;
        }
    }
    

    上述代码中,我们通过循环遍历linjians数组,并检查每个Linjian结构体的cliaoname字段是否已经被赋值(即不为空字符串),以此来确定哪些零件需要被输出。

    如果你在实际代码中遇到问题,建议你检查p指针是否确实指向了一个有效且已初始化的struct Machin实例,以及linjians数组中的每个struct Linjian是否都被正确初始化和填充。这样可以确保你的程序能够正确输出机器的信息,而不仅仅是内存地址。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月26日
  • 已采纳回答 6月18日
  • 创建了问题 6月18日