如果问题不是真的解释,我很抱歉。我试图将该矩阵设置为0并且由于测试printf,我看到当我是2时j被设置为0而不是3.我错在哪里?
int matrix[3][3];
int i, j;
for(i=0;i<4;i++){
for(j=0;j<4;j++){
matrix[i][j] = 0;
printf("%d\t%d\t%d\n", matrix[i][j], i, j);
}
}
答案 0 :(得分:3)
如果您只想将所有条目清零,可以使用:
memset(matrix, 0, sizeof(matrix));
您必须#include <string.h>
。如果编译器在编译时不知道矩阵的大小(它在其他地方声明),那么你仍然可以使用它:
memset(matrix, 0, rows*cols*sizeof(double));
在你的情况下
memset(matrix, 0, 3*3*sizeof(double));
答案 1 :(得分:2)
矩阵[3] [3]表示其索引为0,1和2
因此改变这个
for(i=0;i<4;i++){
for(j=0;j<4;j++){
到
for(i=0;i<3;i++){
for(j=0;j<3;j++){
答案 2 :(得分:1)
您的循环正在访问未初始化的内存位置,例如matrix[3][3]
。它具有不确定的值,最终调用未定义的行为
改变
for(i=0;i<4;i++)
到
for(i = 0; i < 3; i++)
同样的第二个循环。
您可以使用初始化程序
int matrix[3][3] = {{0}};