使用malloc函式,先分配第一維的大小,然後再迴圈分配每一維的大小。示例程式碼,分配3行4列二維陣列:#include <stdio.h>#include <malloc.h>int main(){ int **a; int i, j; a = (int**)malloc(sizeof(int*)*3);//為二維陣列分配3行 for (i = 0; i < 3; ++i){//為每列分配4個大小空間 a[i] = (int*)malloc(sizeof(int)*4); } //初始化 for (i = 0; i < 3; ++i){ for (j = 0; j < 4; ++j){ a[i][j] = i+j; } } //輸出測試 for (i = 0; i < 3; ++i){ for (j = 0; j < 4; ++j){ printf ("%d ", a[i][j]); } printf ("\n"); } //釋放動態開闢的空間 for (i = 0; i < 3; ++i){ free(a[i]); } free(a); return 0;}/*輸出:0 1 2 31 2 3 42 3 4 5*/
使用malloc函式,先分配第一維的大小,然後再迴圈分配每一維的大小。示例程式碼,分配3行4列二維陣列:#include <stdio.h>#include <malloc.h>int main(){ int **a; int i, j; a = (int**)malloc(sizeof(int*)*3);//為二維陣列分配3行 for (i = 0; i < 3; ++i){//為每列分配4個大小空間 a[i] = (int*)malloc(sizeof(int)*4); } //初始化 for (i = 0; i < 3; ++i){ for (j = 0; j < 4; ++j){ a[i][j] = i+j; } } //輸出測試 for (i = 0; i < 3; ++i){ for (j = 0; j < 4; ++j){ printf ("%d ", a[i][j]); } printf ("\n"); } //釋放動態開闢的空間 for (i = 0; i < 3; ++i){ free(a[i]); } free(a); return 0;}/*輸出:0 1 2 31 2 3 42 3 4 5*/