问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

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++提供了更简洁的语法来处理动态内存分配,使得代码更加清晰易读。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号