我創建了一小段代碼來動態分配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