c++ - 将结构发送到函数 C++
问题描述
我有一个程序要求一些礼物,然后你输入它的描述、价格和单位。
我有一个函数用于在它自己的 cpp 文件中显示详细信息:
void display(const Gift&) {
cout << "Gift Details:" << endl;
cout << "Description: " << gifts.g_description << endl;
cout << "Price: " << gifts.g_price << endl;
cout << "Units: " << gifts.g_units << endl;
}
这是我尝试通过另一个 cpp 文件调用它的地方:
for (int i = 1; i <= numberOfGifts; i++) {
cout << "Gift #" << i << endl;
display(gifts[i]);
cout << endl;
}
我似乎无法弄清楚如何让它显示第一个、第二个、第三个和第四个值?它只显示第四个值 4 次。将不胜感激一些帮助
解决方案
void display(const Gift&)
接受对 aGift
作为参数的引用,但如果没有参数的标识符(名称),则函数无法与参数交互。
而是在函数中使用void display(const Gift& gift)
,然后使用gift
代替。gifts
未来的错误:
数组通常在 0 和数组的维度 -1 之间有效。在
for (int i = 1; i <= numberOfGifts; i++)
i
范围从 1 到numberOfGifts
. 至少这忽略了第一个,第 0 个元素,gifts
并且很可能会允许程序访问数组末尾的一个元素。跳过第一个值会浪费内存,但可能没问题。尝试访问数组外部的值是不好的,结果非常不可预测。
推荐阅读
- flutter - 颤振显示在 null 上调用了方法“[]”。在列表生成器上
- html - 在 Flutter 中渲染 HTML 视图
- flutter - 当 AsyncValue 更新时,StreamProvider 不会重建小部件树
- python - 更新正则表达式以提取 IBAN
- vue.js - 使用 Vuetify 进行动态计算
- javascript - 在plotly JS中附加多个y轴数据
- sql - 在 tableau 上创建条件列
- git - gitignore - 仅包含某些扩展名,文件名除外
- ansible - 首次尝试多次播放剧本文件时,Ansible 跳过剧本
- selenium - Selenium 如何点击一个标签使用引导下拉类