C和C++的区别(二)

1、引用

引用就是个别名,内存单元的别名,底层以指针的方式来支持引用,在引用使用的地方,系统自带解引用的过程。

int a = 10;
int &b = a;

a和b是同一个内存块

引用的注意事项:

  1. 引用一定要初始化
  2. 引用引用的变量要能取地址
  3. 引用是不可改变的
  4. 引用只能访问引用变量所以用的内存块的内容

2、new、delete和malloc、free

new和malloc的区别

  1. malloc只能在堆上开辟,new在自主存取区域开辟
  2. malloc是函数,new是关键字
  3. malloc只能开辟内存,new可以开辟并初始化
  4. 内存不足时,malloc返回空,new抛出异常
  5. malloc不能开辟常量内存块,new可以开辟
int *p1 = (int*)malloc(sizeof(int)*10);//c语言动态开辟数组
free(p1);

int *p2 = new int[10];   //c++动态开辟数组,10为数组长度
delete[]p2;

int *p3 = new int(10);   //c++开辟的同时并且初始化

int *p4 = new int[10]();  //c++开辟数组并进行零初始化
delete[]p4;

const int *p5 = new const int(10);       //c++中开辟常量内存块
delete p5;

const int *p6 = new const int[10]();    //c++开辟常量内存数组,但是此操作毫无意义

//c++中动态开辟二维数组
int **p8 = new int*[10];
for(int i = 0;i < 10;i++)
{
    p8[i] = new int[10];
}
for(int i = 0; i < 10; i++)
{
delete[]p8[i];
}
delete[]p8;

//重定位new
int a;
char *p = new(&a)char('a');

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值