1. 程式人生 > >malloc動態申請一個二維陣列的兩種方法

malloc動態申請一個二維陣列的兩種方法

方法一:利用二級指標申請

#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;
}