如何防止矩阵访问不允许的值

How to prevent matrix from accessing unnallowed values

你好,我创建了一个随机的 6x6 矩阵 int S[6][6],问题是当我尝试访问 S[6][-1] 等不存在的正方形的值时,它应该 return 0 但相反它 return 是 S[5][5] 广场。如果我尝试动态分配,我会得到 0x0005 段错误。

2  1  2  1  2  1
2  1  1  2  1  1
2  2  1  1  2  1
1  2  1  1  1  2
1  2  2  2  1  1
1  1  1  2  2  2        //S[0][6] = S[1][0]

有办法解决这个问题吗?

您或许应该为此实现一个函数。它可能看起来像这样:

int matrix_get_value(int row, int column) {
    if(row < 0 || row >= 6 || column < 0 || column >= 6)
        return 0;
    return matrix[row][column];
}

也可以通过将矩阵作为函数参数传递来以更动态的方式完成

int matrix_get_value(int **matrix, int size_rows, int size_columns, int row, int column) {
    if(row < 0 || row >= size_rows || column < 0 || column >= size_columns)
        return 0;
    return matrix[row][column];
}

在此解决方案中,矩阵作为双指针(指向指针的指针)传递给函数,但这也可以通过其他方式完成。