【发布时间】:2020-03-22 10:55:54
【问题描述】:
我的问题:
我有一个项目和一个包的结构;
struct Item {
int value;
int weight;
};
struct Bag {
int maxWeight;
Item *items;
int maxItems;
int itemsHolding;
};
在我的主目录中,我有这个数组:
int testValues[] = { 4, 11, 6, 2, 10, 4, 12, 6, 13, 7, 23 };
- 索引 0:项目总数
- 索引 1:包的总重量
- 最后一个索引:这个问题忽略它
- 所有其他索引都是“一对”
例如:
- 6 代表第一项值
- 2 代表第一项重量
- 等等
然后我有这个 Items 数组
Item items[testValues[0]];
这个函数应该将所有值组织到对应的项目中:
void item_InitUsableItems(int *values, int nItems, Item *items) {
for (int i = 2; i < nItems + 2; i+=2) {
items[i-2].value = values[i];
items[i-2].weight = values[i+1];
}
}
调用函数:
item_InitUsableItems(testValues, testValues[0], items);
然后我将所有项目打印到控制台仅用于测试目的:
for (int i = 0; i < 4; i++){
printf("%d - %d\n", items[i].value, items[i].weight);
}
这给了我这样的结果:
6 - 2
-1231927808 - -1282274509
10 - 4
1666274963 - 22033
预期的结果是这样的:
6 - 2
10 - 4
12 - 6
13 - 7
我是 C 的新手,大约学习了一周!如果您发现其他任何不正确的地方,请告诉我!
【问题讨论】:
标签: c arrays linux for-loop pointers