gpt4 book ai didi

c - 没有获得 2d 数组的 ArrayOutofBounds 异常

转载 作者:行者123 更新时间:2023-11-30 19:47:48 25 4
gpt4 key购买 nike

我似乎遇到了一个问题,当我访问超出数组范围的索引时,我的编译器没有正确给出异常。

例如:在我的代码中我有

int reds[8][8];

这应该创建一个高度为 8(0-7)、宽度为 8(0-7) 的二维数组。问题是,我以后有以下几行代码:

reds[0][8] = 1;
reds[0][65] = 1;

我的代码编译得很好,没有错误。然而,我的程序显然没有按照我想要的方式工作。

if(reds[r][column] > 0){
if(column == 0) Red1_Write(0);
if(column == 1) Red2_Write(0);
if(column == 2) Red3_Write(0);
if(column == 3) Red4_Write(0);

每次不应该进入 if 语句时都会进入。数组第 0 行第 1 列到第 3 列的值设置为零。我做错了什么?

最佳答案

欢迎来到“C”。 “C”中的数组没有边界检查。访问数组末尾的索引会导致未定义的行为(即崩溃和其他奇怪的行为)。

程序员应该以某种方式编码来防止这种情况发生。如果您还没有这样做,请查看 C++ 标准库(基于旧的 STL),它提供了通用容器类来帮助您管理此类情况。显然,只有当您可以在程序中使用 C++ 编译器时,这才有用。

STL:http://www.sgi.com/tech/stl/
微软:http://msdn.microsoft.com/en-us/library/cscc687y.aspx

关于c - 没有获得 2d 数组的 ArrayOutofBounds 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20456891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com