c++ new多维数组动态内存分配方法

这篇博文介绍了C++中使用new运算符动态分配多维数组的步骤和规则,包括基本语法、一维、多维数组的创建,以及delete运算符的使用来释放内存。通过实例展示了如何创建和释放m*n的动态二维矩阵。

【本篇博文为学习过程中做的笔记,方便自己阅读而已,非原创】

 

1.new运算创建对象

基本语法:        指针变量  =  new  类型名    (初始化表);

  • new 运算符在堆(内存)中创建一个由类型名指定类型的对象,如果创建成功,返回对象的地址,否则返回NULL;
  • 初始表给出被创建对象的初始值;
  • 由于返回的是地址,所以要事先定义一个类型相同的指针变量来存储这个地址;

例:

int * ip;

ip = new int(5);

或:int *p = new int(5);

 

  • 创建一维数组

语法格式:                指针变量   =  new 类型名[下标表达式];

  • 下标表达式可以是变量表达式
  • new申请失败时返回NULL,申请动态数组往往需要较大的空间,因此在程序中需要对new的返回值进行判断,看是否申请成功

例:

int *pa;

pa = new int[5];

或:int *pa = new int[5];

  • 创建多维数组

语法形式:      指针变量  = new 类型名T[下标表达式1][下标表达式2][...]

  • 只有下标表达式1可以是任意正整数的表达式,其他必须为值为正整数的常数表达式;
  • 如果申请成功,new 运算返回一个指向新分配内存首地址的指针,它是一个T类型数组的指针而不是T类型指针数组元素的个数为除最左边一维(最高维)外各维下标表达式的乘积

例:

int (*pb)[4][5];

pb = new int[3][4][5];

 

2.delete运算

  • 释放指针变量           delete 指针变量名;

  • 释放动态数组          delete [ ]指针变量名;

3.实例:

建立m*n的动态二维矩阵:

#include<iostream>
using namespace std;
int mian()
{
    int m,n;
    int **dm;
    cout << "input matrix size m,n:" ;
    cin >> m >> n;
    dm = new int *[m];
    for(int i = 0; i < m; i++)
        if((dm[i] = new int [n])==NULL)
            exit(0);
    for(int i = 0; i< m; i++)
        for(int j = 0; j < n; j++)
            cin >> dm[i][j];
    for(int i = 0; i < m; i++)
    {
        for(int j = 0; j < n; j++)
            cout << dm[i][j];
        cout << endl;
     }
    for(int i = 0; i < m; i++)
        delete []dm[i];
    delete dm;

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值