new 和 delete

new 和 delete能够动态的创建数组,删除数组。

char *a = new char;

delete a;

char *a = new char[12]                               //创建一个12个字节的字符数组

delete [] a;

int *a = new int[12];                                        //创建一个12个字节整形数组

delete [] a;

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
    int *a = new int[10];
    for (int i = 0; i < 10; i ++) {
        a[i] = i;
    }
    for (int i = 0; i < 10; i ++) {
        cout << a[i] << endl;
    }
    delete [] a;
    return 0;
}

创建二维数组

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
    int **a = new int* [10];         //注意前面的指针是比后面高一级的指针
    for (int i = 1; i <= 10; i ++) {   //二维指针的创建是一维一维进行的。
        a[i-1] = new int[i];
    }
    for (int i = 1; i <= 10; i ++) {
        for (int j = 0; j < i; j ++) {
            a[i-1][j] = i;
        }
    }
    for (int i = 1; i <= 10; i ++) {
        for (int j = 0; j < i; j ++) {
            cout << a[i-1][j]<<" ";
        }
        cout << endl;
    }
    for (int i = 1; i <= 10; i ++) { //二维指针的删除是先删除一维指针,在删除二维指针。
        delete [] a[i-1];
    }
    delete [] a;
    return 0;
}


注意:

      在构造函数中使用new来初始化对象的指针,则应在析构函数中使用delete。

      new和delete必须相互兼容。new对应delete,new [] 对应 delete []。

      如果有多个构造函数,则必须以相同的方式使用new,要么都带中括号,要么都不带。因为只有一个析构函数,因此所有的构造函数都必须与它兼容。不过,可以在一个构造函数中使用new来初始化指针,而在另一个构造函数中将指针初始化为空,这是因为delete可以用于空指针。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值