您的位置:首页 > 编程语言 > C语言/C++

C++中一维,二维动态数组的建立,与内存的释放delete 和 delete[] 的使用

2017-07-02 19:01 543 查看
1.1C++中建立普通一维数组

int A[10];

这个数组A是不能用delete释放空间的,因为这个数组A在声明时就已经说明了空间的大小,在最后程序会自动释放这个空间。

1.2C++中建立动态一维数组:

int *A=new int[10];

因为数组A是一个动态数组,数组空间是动态分配的,程序是不能自动释放的,所以我们自己手动编程用delete来释放。

这里new运算符返回一个元素的地址,该地址被赋予指针A,A指向数组的以一个元素,此时*A即为数组第一个元素的值,等价于A[0]。

释放动态数组A的内存需在程序最后写如下语句:delete [] A;

2.1C++中建立普通二维数组

int B[10][10];

2.2C++中建立动态二维数组:

#include <iostream>

using namespace std;

int main(int argc, char** argv) {

    int n,m;

    cin>>n>>m;//m和n代表数组的行数和列数

    int **p=new int *
;//p[]的元素为指针类型数据

    for(int i=0;i<n;i++)

    {

        p[i]=new int[m];//p[i]为数组的函指针

            

    }

        for(int i=0;i<n;i++)

    {

        for(int j=0;j<m;j++)

        {

        p[i][j]=i*j;

        cout<<p[i][j];    

        }            

    }

    

    for(int i=0;i<n;i++) //因为p是一个动态的数组,所以数组空间动态分配,程序不能自动 释放,所以自己要用delet释放。

    {

        delete [] p[i];//

        p[i]=NULL;        

    }

    delete []p;//释放指针和

    p=NULL;

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息