首页 > 解决方案 > 数组对象中的指针

问题描述

我有一个名为 Customer 和 Car 的课程。Customer 存储名称和余额,Car 存储汽车的名称及其价格。我已将文本文件中的信息分别读取到对象数组客户和汽车中,因此这些对象数组中存储了一些客户和汽车。现在我想用指针用 cout 打印出这些值。所以我做了类似的事情

Customer (*firstcustomer)[10] = &customers;
Car (*firstcar)[6] = &cars;

for (int i = 0; i < 10; i++)
{ cout << *(firstcustomer+i*2) << " " << *(firstcustomer+i*2+1) << endl;}

汽车也是如此。但是,当我编译它时,它会打印出值的地址,而不是实际值!我用 * 取消引用它。那么有人可以向我解释为什么会这样吗?谢谢你。

标签: c++arraysclassobjectpointers

解决方案


标准字符流没有数组的插入重载。当您插入一个数组时,它会衰减为指向数组第一个元素的指针,您最终会调用接受指向 void 的指针的重载,其行为是输出指针的值。

标准字符流也没有用户定义类的重载。因此,除非您自己定义了此类重载,否则以下内容将不起作用:

要打印数组的元素,可以使用下标运算符来访问数组特定索引中的对象:

std::cout << (*firstcustomer)[i];

推荐阅读