方法一:利用二级指针申请
#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;
}