动态申请二维数组。

本文详细介绍了两种动态申请二维数组的方法:第一种是通过先申请一维数组,再调整指针来实现;第二种是逐行申请内存。这两种方法分别有不同的内存连续性和使用注意事项,对于避免内存越界和理解动态内存分配有很好的指导意义。
摘要由CSDN通过智能技术生成

动态申请二维数组可以先申请一个一维数组,然后再将其按地址分割成数组:

如想申请一个row行col列的int 数组:

先申请一个row*col的in一维t数组 : int * pInt = new int[row*col];

再数申请一个指针数组,每个指针指向一行: int ** ppInt =new int*[col];

再调整该指针的位置:

 for (int h=0;h<row;h++)
 {
     ppInt[h]=pInt+h*col;
 }

具体如下:红色为使用malloc函数。

int ** D2Array(int row,int col)
{
 int *pInt = new int[row*col]; 
 //int *pInt = (int *)malloc(sizeof(int)*row*col);
 int **ppInt =new int*[col];
 //int **ppInt=(int **)malloc(sizeof(int*)*col);
 for (int h=0;h<row;h++)
 {
  ppInt[h]=pInt+h*col;
 }
 return ppInt;
}

使用该方法创建的数组所有的元素在内存里是连续的

二、

首先申请一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值