C++与C之间的一些区别,以及指针与引用之间的区别

  • C++基本上完全兼容C语言,C语言是C++的一个子集,C++则是C语言的一个超集
  • C语言是面向过程的语言,C++则是宏观上面向对象,微观上面向过程的
  • C++支持运算符的重载
  • C++支持异常机制
  • C++支持泛型编程
  • C++中申请动态内存可以使用new/new[]

new/delete和malloc/free之间的区别

  • new/delete是C++中申请、释放动态内存的关键字,malloc/free是C中申请、释放动态内存的函数
  • new/delete会分别调用类的构造和析构函数,malloc/free不会调用类的构造和析构函数
  • new申请动态内存只需给出数据类型,不需计算数据类型的字节大小,malloc申请动态内存只需给出申请的动态内存字节大小,new只关心类型,malloc只关心大小
  • new申请失败会抛出异常,malloc返回失败则是返回NULL
  • new申请成功返回的是特定类型的指针,malloc返回的则是void*类型的指针
  • new申请一片连续的内存需要使用new[],malloc直接输入内存的大小即可
  • new/new[]分别使用delete/delete[]来释放,malloc/calloc申请的内存一律使用free释放

指针与引用之间的区别

  • 指针是实体变量,引用不是实体变量
  • 指针可以不初始化,引用必须初始化
  • 指针可以为NULL,引用不能为空
  • 指针可以更改指向,引用不能更改引用目标
int n, m;
int *p = &n;
p = &m;    //这样是可以的

int n, m;
int& p = n;
//&p = m;    不能更改目标    会报错
p = m;//但可以用m进行赋值
  • 可以定义指针的指针(双指针),不能定义引用的引用
  • 可以定义指针的引用,不能引用的指针
int n = 1024;
int *pn = &n;
int *& rpn = pn;  //指针的引用

int& rn = n;
//int& *pr = &rn;  无法定义int&(引用)的指针
  • 可以定义数组的引用,不能定义引用的数组
int arr[5] = {1,2,3,4,5};
int (&ra)[5] = arr;  //ra引用了arr数组  ra就相当于数组名arr

//int& brr[5];        //引用的数组    错误的   不能声明引用的数组
  • 引用的本质还是指针,底层是用指针来实现的
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值