【发布时间】:2017-03-26 08:22:22
【问题描述】:
C 初学者并遇到初始化数组的函数的问题。在代码中编译:Windows 10 上的 Blocks 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;
}
我已经设置了打印语句来查看在崩溃之前我已经走了多远,我进入了第二个 for 循环,但它在 i=140 时崩溃了。如果我更改常数(等于 1000),那么我可以将其设置为不会崩溃的最高值是 i
我试过在谷歌和这里搜索,似乎终止代码不是一个非常具体的代码,因为我已经看到了需要返回语句、尝试访问不存在的东西等的解决方案。真的丢了。
【问题讨论】:
-
float auction[2][MAXAUCTIONITEMS]:您的第一个维度的大小为 2,但您使用auction[2][i]对拍卖进行索引,超出范围。请记住,C 是从 0 开始的。 -
一般来说,你应该提交一个完整的程序来证明错误——例如包括一个
main,它做最少的工作来显示错误。 -
使用调试器解决这些问题。
-
@Evert,尝试使用调试器,在项目中打开它(因为 Code:Blocks 显然不支持调试单个源文件)并且实际上无法让 Code:Blocks 构建我的程序。它一直告诉我它想构建它,但每当我单击“是”时,它就会再次询问。
-
未来提示:当您收到类似
-1073741819的奇怪十进制错误代码时,请将其转换为十六进制,在本例中为0xc0000005。这是 Windows 上可识别的状态代码,它是访问冲突错误(即访问无效的内存)。
标签: c