malloc動態申請一個二維陣列的兩種方法
阿新 • • 發佈:2018-11-12
方法一:利用二級指標申請
#include <stdio.h> #include <malloc.h> const int num = 2; int main() { int **a = (int**)malloc(num*sizeof(int*)); for (int i = 0; i < num; i++) a[i] = (int*)malloc(num*sizeof(int)); for (int i = 0; i < num; i++) { for (int j = 0; j < num; j++) printf("%p ", &a[i][j]); //輸出元素的地址 printf("\n"); } for (int i = 0; i < num; i++) //記得釋放空間 free(a[i]); free(a); return 0; }
方法二:用陣列指標形式申請
#include <stdio.h> #include <malloc.h> const int num = 2; int main() { int (*a)[num] = (int(*)[num])malloc(num*num*sizeof(int)); for (int i = 0; i < num; i++) { for (int j = 0; j < num; j++) printf("%p ", &a[i][j]); //輸出元素的地址 printf("\n"); } free(a); return 0; }