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

猜你喜欢

转载自blog.csdn.net/weixin_40571331/article/details/83278694