初学C,遇到初始化数组函数的问题。编译代码:块16.01在Windows 10。我遇到问题的具体代码是:
void initAuction(float auction[2][MAXAUCTIONITEMS]) {
int i;
for (i = 0; i < MAXAUCTIONITEMS; i++) {
auction[1][i] = -1;
printf("n%ft%dn", auction[1][i], i);
};
for (i = 0; i < MAXAUCTIONITEMS; i++) {
auction[2][i] = 0;
printf("nn%ft%d", auction[2][i], i);
}
printf("n%fn", auction[2][70]);
return;
}
我设置了print语句来查看我在崩溃之前执行了多远,我进入了第二个for循环,但它在I =140时崩溃了。如果我改变常数(等于1000),那么我可以设置它的最大值是84,而不会崩溃。-1073741819当第一行初始化没有问题,但是第二行选择在i=140左右崩溃时,什么会导致终止状态
我试过在谷歌和这里搜索,似乎终止代码不是一个非常具体的代码,因为我已经看到了需要返回语句的解决方案,试图访问不存在的东西,等等。真的输了。
有效的索引是auction[0][*]
和auction[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
类型的一部分,编译器会忽略它。