Ç - 总线错误(核心转储) - 矩阵误差
问题描述:
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的矩阵,在其中我们储存在用户输入的给定值。之后,我们将数组打印到用户输入。我在另一个程序中这样做,这是因为这个代码,我的程序会崩溃。
有谁知道总线错误发生?
答
您声明了一个可变长度数组,其维度基于未初始化的值。在读取m
后推迟数组声明应该可以解决问题:
int n,m, number;
scanf("%d %d", &n, &m);
int array[m][m];
+0
非常感谢! – MilkyMan
+0
不客气。如果有帮助,请不要犹豫,接受答案:-) –
'array [m] [m]''m''未初始化? –
阅读'n'的目的是什么? – chqrlie
这是从另一个代码复制的,这是它崩溃的部分,在我的代码中使用n代码。 – MilkyMan