#include<stdio.h>
#include<malloc.h>
//1,利用指针数组,每一行元素连续但不能保障上一行的尾和下一行的头挨着
int main()
{
int** p = (int**)malloc(3*sizeof(int*));//申请竖排数组
for (int i = 0; i < 3; i++)
{
p[i] = (int*)malloc(4 * sizeof(int));
}
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
printf("%p\n", &p[i][j]);
}
}
for (int i = 0; i < 3; i++)
{
free(p[i]);
}
return 0;
}
#include<stdio.h>
#include<malloc.h>
//2.用数组指针
int main()
{
int(*p)[4] = (int(*)[4])malloc(3 * sizeof(int*));
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
printf("%p\n", &p[i][j]);
}
}
return 0;
}
//3.用二维数组的思想去管理申请的一维数组
int main()
{
int* p = (int*)malloc(3 * 4 * sizeof(int));
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
p[i * 4 + j] = 1;//不能直接写p[i][j]
printf("%p\n", &p[i * 4 + j]);
}
}
free(p);
return 0;
}