如何将矩阵设置为0?

时间:2014-03-27 13:05:53

标签: c for-loop matrix

如果问题不是真的解释,我很抱歉。我试图将该矩阵设置为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);
    }
}

3 个答案:

答案 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}};