2d阵列矩阵打印不正确

时间:2014-02-26 00:39:19

标签: c arrays matrix multidimensional-array

矩阵打印不正确,有谁能告诉我哪里出错了?

int i , j;
       int n =0 , m =0;
       int p =0 , q =0;
       int matrix1[n][m];
       int matrix2[p][q];

       printf("ENTER THE NUMBER OF ROWS AND COLUMNS IN 1st MATRIX\n");
       scanf ("%d%d",&n,&m);

       for (i=0; i<n; i++)
            for (j=0; j<m; j++)
            {
               printf ("ENTER THE matrix1[%d][%d]:  ",i,j);
               scanf ("%d",&matrix1[i][j]);

            }

我相信这就是问题所在。

      for (i=0;i<n;i++)
      {
          for (j=0;j<m;j++)
          {
             printf ("%d ",matrix1[i][j]);

          }
        printf ("\n");
      }

1 个答案:

答案 0 :(得分:0)

如果您希望内存存储仅在运行时知道其大小的对象,我建议您根据需要分配它,使用以下代码

   int i, j;
   int n, m;
   int **matrix;

   printf("ENTER THE NUMBER OF ROWS AND COLUMNS IN 1st MATRIX\n");
   scanf ("%d%d",&n,&m);

   matrix = malloc(sizeof(int *) * n);
   if (!matrix) {/* no memory; handle it */}
   for (i=0; i<n; i++)
        matrix[i] = malloc(sizeof(int) * m);
        for (j=0; j<m; j++)
        {
           printf ("ENTER THE matrix[%d][%d]:  ",i,j);
           scanf ("%d",&matrix[i][j]);

        }

不要忘记释放你的记忆

for (i = 0; i < n; i++)
  free(matrix[i]);
free(matrix);