


如图,运行后显现的是地址而非内容,我应该怎么修改,能保证输出的是相对应的内容
关注引自免费微信小程序:皆我百晓生
从你提供的代码片段来看,你遇到了在C++中输出结构体成员时,得到的是地址而不是内容的问题。这通常是因为你在尝试输出指针变量时没有解引用它们,或者在某些情况下,可能是因为编译器默认输出了对象的地址而不是其内容。
在你的代码中,有几处需要特别注意的地方:
p->name、p->A11Num和p->linjians时,确保p指向的结构体已经被正确初始化并且包含了有效的数据。linjians数组是struct Machin的一部分,当你试图输出它时,如果没有正确的索引或迭代方式,你将只看到它的起始地址。为了解决这个问题,你需要确保以下几点:
p->name之前,p必须是一个有效的指向struct Machin类型的指针,并且这个结构体中的name字段已经被赋值。p->A11Num,确保A11Num已经被初始化。p->linjians,由于它是一个数组,你需要循环遍历并输出每个元素的cliaoname和sum字段。下面是一段修改后的代码示例,展示如何正确输出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是否都被正确初始化和填充。这样可以确保你的程序能够正确输出机器的信息,而不仅仅是内存地址。