指针初始化和释放,无论几层都需要一层层进行分配或释放
直接上代码:
#include <stdio.h>
#include <malloc.h>
void main()
{
int** p;
int i, j;
int a = 0,k=1;
printf("请输入要分配的二级指针行列数:n = ");
scanf_s("%d", &a);
p = (int**)malloc(a * sizeof(int*));
for (i = 0; i < a; i++) {
p[i] = (int*)malloc(a * sizeof(int));
}
for (i = 0; i < a; i++) {
for (j = 0; j < a; j++) {
p[i][j] = k* a + j;
}
k++;
}
for (i = 0; i < a; i++) {
for (j = 0; j < a; j++) {
printf(" %2d", p[i][j]);
}
printf("\n");
}
for (i = 0; i < a; i++) {
free(p[i]);
}
free(p);
}