码迷,mamicode.com
首页 > 其他好文 > 详细

new 和 delete

时间:2014-12-10 19:50:20      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:二维数组   指针   

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可以用于空指针。


new 和 delete

标签:二维数组   指针   

原文地址:http://blog.csdn.net/wuhuajunbao/article/details/41843497

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!