如何防止矩阵访问不允许的值
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];
}
在此解决方案中,矩阵作为双指针(指向指针的指针)传递给函数,但这也可以通过其他方式完成。
你好,我创建了一个随机的 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];
}
在此解决方案中,矩阵作为双指针(指向指针的指针)传递给函数,但这也可以通过其他方式完成。