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

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;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值