您的位置:首页 > 编程语言 > C语言/C++

详解C语言用malloc函数申请二维动态数组的两个实例

2018-01-02 14:01 309 查看
C语言在程序运行中动态的申请及释放内存十分方便,一维数组的申请及释放比较简单。#include <stdio.h>
int main()
{
char * p=(char *)malloc(sizeof(char)*5);//申请包含5个字符型的数组
free(p);
return 0;
} 申请二维数组
/* 申请一个5行3列的字符型数组*/
char **p=NULL;int i;
p=(char ** )malloc(sizeof(char *)*5);
for(i=0;i<5;i++)
p[i]=malloc(sizeof(char)*3);
/*释放内存*/
for(i=0;i<5;i++)
free(p[i]);
free(p);
二维动态数组用函数创建的实例#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

#define m 3 /* row */
#define n 4 /* column */
int **creat2d(int mm,int nn);//声明一下子函数
void main()
{
int i,j;
int **s;
s=creat2d(m,n);

for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
s[i][j]=i*2+j;//s当做二维数组使用
printf("s[%d][%d]=%d ",i,j,s[i][j]);
}
printf("\n");
}
for(i=0;i<m;i++)//先free掉m个行指针
{
free(s[i]);
s[i]=NULL;//free之后要置为null,防止野指针
}
free(s);
s=NULL;//防止野指针
}

int **creat2d(int mm,int nn)
{
int **a;
int j;
a=(int**)malloc(sizeof(int*)*mm);//mm个行
for(j=0;j<mm;j++)
a[j]=(int*)malloc(sizeof(int)*nn);//每行nn个数
return a;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 二维数组