以状态终止进程-1073741819中环路



初学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,该索引的唯一有效值是01

你可以这样修复和简化代码:

void initAuction(float auction[2][]) {
    for (int i = 0; i < MAXAUCTIONITEMS; i++) {
        auction[0][i] = -1;
        auction[1][i] = 0;
    }
}

注意,第二次元不是auction类型的一部分,编译器会忽略它。

最新更新