c++ - 数组对象中的指针
问题描述
我有一个名为 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;}
汽车也是如此。但是,当我编译它时,它会打印出值的地址,而不是实际值!我用 * 取消引用它。那么有人可以向我解释为什么会这样吗?谢谢你。
解决方案
标准字符流没有数组的插入重载。当您插入一个数组时,它会衰减为指向数组第一个元素的指针,您最终会调用接受指向 void 的指针的重载,其行为是输出指针的值。
标准字符流也没有用户定义类的重载。因此,除非您自己定义了此类重载,否则以下内容将不起作用:
要打印数组的元素,可以使用下标运算符来访问数组特定索引中的对象:
std::cout << (*firstcustomer)[i];
推荐阅读
- c++ - 这是将graphviz用作库的正确方法吗?
- python - 如何使用 Tensorflow 2/Keras 保存和恢复训练具有多个模型部分的 GAN
- python - 无法交互列表
- javascript - 仅当它与 $auth 和 vuejs (nuxt) 一起存在时才显示信息
- python - 如何匹配语句中的变量?
- wordpress - 从所有帖子中获取 ACF 转发器字段值,按子字段排序
- php - NGINX 和 PHP,TLS 版本
- android - 配套设备配对:是否需要启用定位服务?
- artifactory - 是否可以从我们自己的 Artifactory 存储库同步到 Maven Central?
- mysql - 按最新值分组