C++动态开辟二维数组的方法详解
创作时间:
作者:
@小白创作中心
C++动态开辟二维数组的方法详解
引用
1
来源
1.
https://cloud.tencent.com/developer/article/2043121
本文介绍了C++中动态开辟二维数组的方法,通过对比C和C++两种语言的实现方式,详细解释了动态二维数组的内存分配和释放过程,并提供了完整的代码示例。
C方式实现
在C语言中,动态开辟二维数组需要使用指针和malloc
函数。以下是一个具体的实现示例:
#include <iostream>
using namespace std;
#define ROW 3
#define COL 4
void main()
{
int **p = (int **)malloc(sizeof(int*)*ROW);
for(int i=0; i<ROW; ++i)
{
p[i] = (int *)malloc(sizeof(int) * COL);
}
for(i=0; i<ROW; ++i)
{
for(int j=0; j<COL; ++j)
{
p[i][j] = i+j;
}
}
for(i=0; i<ROW; ++i)
{
for(int j=0; j<COL; ++j)
{
cout<<p[i][j]<<" ";
}
cout<<endl;
}
for(i=0; i<ROW; ++i)
{
free(p[i]); //delete []p[i]
}
free(p); //delete []p;
}
C++方式实现
在C++中,动态开辟二维数组可以使用指针和new
运算符。这里采用列优先的方式进行内存分配:
#include<iostream>
using namespace std;
#define ROW 3
#define COL 4
void main()
{
int(*p)[COL] = new int[ROW][COL];
for(int i=0; i<ROW; ++i)
{
for(int j=0; j<COL; ++j)
{
p[i][j] = i+j;
}
}
for(i=0; i<ROW; ++i)
{
for(int j=0; j<COL; ++j)
{
cout<<p[i][j]<<" ";
}
cout<<endl;
}
delete []p;
}
通过对比C和C++的实现方式,可以看出C++提供了更简洁的语法来处理动态内存分配,使得代码更加清晰易读。
热门推荐
揭秘正史中的三国第一猛将——零陵上将邢道荣
学会这几招,健康腌小菜,配粥吃得美美的!
猫甲状腺机能亢进:症状、原因、诊断与治疗全解析
明知六耳猕猴是假悟空,观音为何不出手?看六耳有啥秘密就知道了
婴儿面食做法大全 手把手教你在家做面食
穿越千年烟火,安义古村一日游:古韵今风,慢享时光里的温柔
古代鼓楼的作用与文化意义
阴阳师妖怪屋游戏激活码获取方法与途径详解
汽车窗帘隔热效果的影响因素及提升方法
6岁孩子远视储备不足30度,保护视力,建议要做对这4件事
历史上中国造神现象出现的原因
淘宝退货宝使用指南:从申请到退款全流程详解
董力公布隐婚五年,已有两个娃,妻子却不敢跟他一起外出喝咖啡
心肌缺血是什么原因引起的
心脑血管病的常见危险因素有哪些?
温僖贵妃:清代唯一有谥号的贵妃
丈夫沉迷游戏、工作或其他,妻子如何智慧应对与引导
万敌角色深度解析:星穹铁道最强角色全方位前瞻
胃萎缩性胃炎伴糜烂:病因、预防与治疗全解析
说真的,别再用塑料瓶装东西了!
电机dq轴指什么,电机dq轴的定义和作用
银行的黄金ETF投资的交易方式有哪些?
智能手表新突破:情绪监测或将成现实
锥体外系疾病的四大治疗方法
第二次世界大战的起止时间
三国志战略版攻略:分城被俘虏后如何迁城?
周亚辉:从清华学子到昆仑万维创始人
紫微大帝是谁的化身 紫微大帝的三个化身
拔完牙后牙槽骨会一直是空的吗?不会的,拔牙后牙槽骨具有一定再生性
JAMA子刊最新综述:成人抑郁症的一线治疗方法