C中的初学者,并且遇到了初始化数组的函数问题。在代码中编译:Windows 10上的块16.01。我遇到问题的具体代码是:
void initAuction(float auction[2][MAXAUCTIONITEMS]) {
int i;
for (i = 0; i < MAXAUCTIONITEMS; i++) {
auction[1][i] = -1;
printf("\n%f\t%d\n", auction[1][i], i);
};
for (i = 0; i < MAXAUCTIONITEMS; i++) {
auction[2][i] = 0;
printf("\n\n%f\t%d", auction[2][i], i);
}
printf("\n%f\n", auction[2][70]);
return;
}
我已经设置了print语句,看看我在崩溃之前得到了多远,然后我将它转到第二个for循环,但它在i = 140时崩溃了。如果我改变常数(等于1000)那么我可以将其设置为最高而不会崩溃,因为i <84非常奇怪。什么会导致终止状态-1073741819中间循环当第一行初始化没有问题但第2行选择在i = 140附近崩溃。
我尝试在谷歌和这里搜索,似乎终止代码不是一个非常具体的代码,因为我已经看到需要一个返回语句的解决方案,试图访问不存在的东西等。真的丢失。
答案 0 :(得分:2)
有效索引为auction[0][*]
和auction[1][*]
。
答案 1 :(得分:1)
您正在设置数组的元素超出其边界:auction
的初始维度为2
,此索引的唯一有效值为0
和1
。
您可以通过以下方式修复和简化代码:
void initAuction(float auction[2][]) {
for (int i = 0; i < MAXAUCTIONITEMS; i++) {
auction[0][i] = -1;
auction[1][i] = 0;
}
}
请注意,第二个维度不是auction
类型的一部分,编译器会忽略它。