我创建了一小段代码来动态分配C数组中的二维数组,这用于尝试解决我在较大的一段代码上遇到的问题,如果可以的话让我的脑袋动态分配一个二维阵列我相信我会解决我的其他问题。我遇到的问题是,在分配了矩阵并使用函数写入它之后,我的程序无法运行,我没有收到任何错误,它只是创建一个空白屏幕并最终崩溃。我不知道从哪里进步,任何帮助将不胜感激!动态分配的二维数组出错
下面是代码:
#include <stdlib.h>
void get_matrix(double **a, int n);
int main() {
int n = 5;
int i, j;
double **a;
a = (double **)malloc(n * sizeof(double *));
for (j = 0; j < n; j++)
a[j] = (double *)malloc(n * sizeof(double));
get_matrix(a, n);
for (i = 0; i <= n; i++) {
for (j = 0; j <= n; j++) {
printf("%d, ", a[i][j]);
}
printf("\n, ");
}
return 0;
}
void get_matrix(double **a, int n) {
int i, j;
for (i = 0; i <= n; i++) {
for (j = 0; j <= n; j++) {
a[i][j] = 4;
}
}
}
你看过[this](https://stackoverflow.com/q/42094465/694733)吗? – user694733
@DavidBowling:严格来说,你是对的。为什么不用c99代码发布一个答案,它可以分配和使用2D VLA?语法比上面发布的2D间接数组代码复杂一些。 – chqrlie
@DavidBowling:还有一些其他问题,我发布了一个更完整的答案。 – chqrlie