动态内存一般用malloc函数申请,free函数释放.
这篇博文主要写一下如何创建二维动态内存,下面介绍几种方法.
强转法:
#include <stdio.h>
#include <stdlib.h>
#include <vld.h>
int main()
{
int (*p)[4]=(int(*)[4])malloc(sizeof(int)*3*4);//申请二维数组空间
for(int i=0; i<3; i++)
{
for(int j=0; j<4; j++)
{
printf("%d \n",&p[i][j]);//输出二维数组的地址
}
}
free(p);
}
借助typedef进行转化:转化时的格式:
typedef 数据类型 新数据类型
观察typedef定义的数据类型是什么,方法如下:
去掉typedef,查看定义的类型变量,然后在加上typedef就由该类型的变量提升为数据类型
下面举些栗子:
#include <stdio.h>
typedef unsigned long long int uint64;
typedef int *Pint;
typedef int Arr[10];
typedef int (*Pfun)(int,int);
int main()
{
uint64 a;//即unsigned long long int a;
Pint b;//即int *b;
Arr c;//即int c[10];
Pfun d;//即int (*d)(int,int);
}
下面是运用typedef申请二维数组:
#include <stdio.h>
#include <stdlib.h>
typedef int (*PArr)[4];
int main()
{
PArr p=(PArr)malloc(sizeof(int)*3*4);//申请二维
for(int i=0; i<3; i++)
{
for(int j=0; j<4; j++)
{
p[i][j]=1;
}
}
for(int i=0; i<3; i++)
{
for(int j=0; j<4; j++)
{
printf("%d ",p[i][j]);
}
printf("\n");
}
free(p);
}
