C和C++——动态数组的申请

 

 

这里呢我们主要是针对二维数组的动态申请,而进行的讲解,我们可以做到随时申请,随时释放。

下面我将代码分为三部分:

1.空间(数组)申请函数

2.空间(数组)释放函数

3.数组输出函数.

C和C++——动态数组的申请_第1张图片

/*
制作题目:动态开辟数组
制作时间:2018-7-20
制作人  :TheShyclear

内容信息:
1.采用C中的malloc / free 实现一维二维数组的动态开辟
2.采用C++中的new和delete

主要问题:
1.注意new和delete的用法
2.在动态申请二维数组的时间,二级指针指向的是一个数组,存放的是一级指针
*/

#include
#include
using namespace std;


typedef int Elemtype;


//C下的malloc free的数组的动态申请


Elemtype* DynaticCreate1Array(Elemtype *p,int le)
//一维数组指针,数组的长度
{
    int i=0;

    p = (Elemtype*)malloc(sizeof(Elemtype)*le);

    printf("please input data:\n");
    for(i;i     {
        cin>>p[i];
    }
    return p;
}
void Free1Array(Elemtype *p)
{
    
        free(p);
}

Elemtype** DynamicCreate2Array(int m,int n,Elemtype **p)
{
    int i = 0,j = 0;
    
    p = (Elemtype**)malloc(sizeof(Elemtype*)*m);

    for(i = 0;i     {
        p[i] = (Elemtype*)malloc(sizeof(Elemtype)*n);
    }

    printf("please input the datas:\n");
    for(i = 0;i     {
        for(j=0;j         {
            cin>>p[i][j];
        }
        printf("\n");
    }
    return p;
}

void Free2Array(Elemtype **p,int m)
{
    for(int i=0;i     {
        free(p[i]);
    }
    free(p);
}

//C++下的new和delete数组的动态申请
Elemtype* DynaticNew1Array(Elemtype *p,int len)
{
    p = new int[len];//初始化,申请一维数组,存放类型Elemtype,大小为len
    cout<<"please input data:\n"<

    for(int i=0;i     {
        cin>>p[i];
    }
    return p;
}
void Delete1Array(Elemtype *p)
{
    delete []p;//p指向的空间是一个数组
}
Elemtype** DynamicNew2Array(int m,int n,Elemtype **p)
{
    p = new Elemtype*[m];//对于p来说是一个二级指针,存放的是一级指针类型是Elemtype*,大小是m

    for(int i=0;i     {
        p[i] = new Elemtype[n];//p底下的一级指针指向的是一维数组,存放的类型是Elemtype,大小是n个
    }

    cout<<"please input data:\n"<

    for(int i=0;i     {
        for(int j=0;j         {
            cin>>p[i][j];

        }
        cout<     }
    return p;
}
void Delete2Array(int m,Elemtype **p)
{
    for(int i=0;i     {
        delete []p[i];//指向的是数组
    }
    delete []p;
}
    
void Show_2Array(int m,int n,Elemtype **p)
{
    for(int i=0;i     {
        for(int j=0;j         {
            cout<         }
        printf("\n");
    }
}

 

void Show_1Array(Elemtype *p,int le)
{
    for(int i=0;i     {
        cout<     }
}

void main()
{
    
    int m,n;
    cout<<"please input the m n"<     cin>>m;
    cin>>n;
    Elemtype **s = NULL;
    s = DynamicNew2Array(m,n,s);
    Show_2Array(m,n,s);
    Delete2Array(m,s);


}

 

运行结果:

C和C++——动态数组的申请_第2张图片

你可能感兴趣的:(C/C++,帅气,C++)