Ç - 总线错误(核心转储) - 矩阵误差

问题描述:

int main(int argc, char **argv) {  
    int n, m, number, array[m][m]; 
    scanf("%d %d", &n, &m); 
    for (int k = 0; k < m; ++k) { 
     for (int i = 0; i < m; ++i) { 
      scanf("%d ", &number); 
      array[k][i] = number; 
      printf("%d ", array[k][i]); 
     } 
     printf("\n"); 
    } 
    printf("\n"); 

    for (int k = 0; k < m; ++k) { 
     for (int i = 0; i < m; ++i) { 
      printf("%d k=%di=%d\n", array[k][i], k, i); 
     } 
     printf("\n"); 
    } 
} 

我不断收到错误:Ç - 总线错误(核心转储) - 矩阵误差

Bus error (core dumped) 

我们有一个m * m的矩阵,在其中我们储存在用户输入的给定值。之后,我们将数组打印到用户输入。我在另一个程序中这样做,这是因为这个代码,我的程序会崩溃。

有谁知道总线错误发生?

+4

'array [m] [m]''m''未初始化? –

+0

阅读'n'的目的是什么? – chqrlie

+0

这是从另一个代码复制的,这是它崩溃的部分,在我的代码中使用n代码。 – MilkyMan

您声明了一个可变长度数组,其维度基于未初始化的值。在读取m后推迟数组声明应该可以解决问题:

int n,m, number; 
scanf("%d %d", &n, &m); 
int array[m][m]; 
+0

非常感谢! – MilkyMan

+0

不客气。如果有帮助,请不要犹豫,接受答案:-) –