C++(基础)————c和c++的区别(三)

六、申请动态内存

  1. 基本比较:
    在这里插入图片描述尽管上表中体现c++中申请动态动态内存的方法时new,但是malloc在c++中依然可用。
    然而在c++里区别于c语言的方法,在c语言中时无法使用的。
  2. 实例体现:
    1)、c语言中用malloc申请动态内存:
int main()
{
     一维数组  int   10
    int *arr = (int *)malloc(sizeof(int)* 10);
    assert(NULL != arr);

    for (int i = 0; i < 10; i++)
    {
        arr[i] = i;
        printf("%d ",arr[i]);
    }
    printf("\n");
    free(arr);


    int *p = (int *)malloc(sizeof(int)* 1);
    assert(NULL != p);
    *p = 10;

    printf("%d \n", *p);

    free(p);

    //二维数组,5*5   申请释放  
    int **arr1 = (int**)malloc(sizeof(int *)* 5);//申请可以存放五个指针的指针数组
    assert(NULL != arr1);

    for (int i = 0; i < 5; i++)
    {
        arr1[i] = (int*)malloc(sizeof(int)* 5);//申请长度为5的数组
        assert(NULL != arr1[i]);
    }

    for (int i = 0; i < 5; i++)//向数组中存放数据
    {
        for (int j = 0; j < 5; j++)
        {
            arr1[i][j] = i + j;
        }
    }

    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 5; j++)
        {
            printf("%d ", arr1[i][j]); 
        }
        printf("\n");
    }

    for (int i = 0; i < 5; i++)//释放内存
    {
        free(arr1[i]);
    }
    free(arr);

    return 0;
}

2)、c++中new申请动态内存:

 int main()
    {
        int *p = new int(int());
        *p = 10;
        cout << *p << endl;
        delete p;//释放单个变量

        int *arr = new int[10];//一维数组申请
        for (int i = 0; i < 10; i++)
        {
            arr[i] = i;
            cout << arr[i] << endl;
        }
        delete[]arr;//释放一维数组


        //二维数组  5*5  申请释放

        int **arr1 = new int*[5];//申请长度为5的指针数组
        for (int i = 0; i < 5; i++)
        {
            arr1[i] = new int[5];//申请长度为5的数组
        }

        for (int i = 0; i < 5; i++)//向数组中存入数据
        {
            for (int j = 0; j < 5; j++)
            {
                arr1[i][j] = i + j;
            }
        }

        for (int i = 0; i < 5; i++)//打印数组中的数据
        {
            for (int j = 0; j < 5; j++)
            {
                cout << arr1[i][j] << " ";
            }
            cout << endl;
        }

        for (int i = 0; i < 5; i++)//释放内存
        {
            delete[]arr1[i];
        }
        delete[]arr1;


        return 0;
    }

七、自定义类型

  1. 基本比较
    在这里插入图片描述2、实例:
    以c++为例,在自定义类型里边允许存在成员变量,也允许存在成员方法。
struct stack
{
    int *_arr;
    int _top;
    int _len;

    void init()
    {
        _top = 0;
        _len = 10;
        _arr = new int[10];
    }

    void push(int val);
    void pop();
    int top();
    void destroy();
    bool isEmpty();
    void resize();
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值