栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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];        //引用的数组    错误的   不能声明引用的数组
  • 引用的本质还是指针,底层是用指针来实现的
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1033361.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号