new和delete的基本语法

转载:https://blog.csdn.net/QQ960054653/article/details/55657298

1、new int; //开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针)
2、new int(100);  //开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址
3、new char[10];  //开辟一个存放字符数组(包括10个元素)的空间,返回首元素的地址
4、new int[5][4];  //开辟一个存放二维整型数组(大小为5*4)的空间,返回首元素的地址
5、float *p=new float (3.14159);  //开辟一个存放单精度数的空间,并指定该实数的初值为//3.14159,将返回的该空间的地址赋给指针变量p

注意: new和delete是运算符,不是函数,因此执行效率高。

#include<iostream>
using namespace std;

//1 new和delete操作符 c++语法(malloc free)
//2 基础类型变量  分配数组变量 分配类对象

/************************************************************************/
/* new分配基础类型                                                      */
/************************************************************************/

int main01()
{
//C语言的语法
    int *p = (int *)malloc(sizeof(int));
    *p = 10;
    free(p);

//c++语言的语法
    int *p2 = new int;
    *p2 = 20;
    free(p2);

//分配内存的时候初始化
    int *p3 = new int(30);
    printf("p3:%d\n",*p3);
    delete p3;

system("pause");
return 0;
}


/************************************************************************/
/* //分配数据变量                                                       */
/************************************************************************/
int main02()
{
    //c语言分配数据
        int *p = (int *)malloc(sizeof(int) * 10);//int arry[10]
        p[0] = 1;//可以通过数组下标的方式访问
        free (p);
    
    //c++语言分配数据
        int *pArry = new int[10];
        pArry[1] = 2;
        delete [] pArry;//释放数组内存的时候不要忘记  "[]" 
    
    system("pause");
    return 0;
}

/************************************************************************/
/*动态分配一个对象                                                      */
/************************************************************************/

class Test
{
    public:
    Test(int _a)
    {
        a = _a;
        cout<<"构造函数"<<endl;
    }
    ~Test()
    {
        cout<<"析构函数"<<endl;
    }
    
    private:
        int a;
};

//分配对象new delete 
//相同 和 不同的地方 new能自动的执行类型的构造函数  delete操作符能执行类的析构函数
int main()
{
    //c语言的语法
    Test *pT1 = (Test *)malloc(sizeof(Test));
    free(pT1);
    //c++的语法
    Test *pT2 = new Test(10);
    delete pT2;
    
    system("pause");
    return 0;
}

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值