当前位置: 首页 > article >正文

c++入门--引用与指针,const与引用,NULL与nullptr

1.引用与指针:
1.1引用的介绍:

引用相当于一个变量的别名,向函数传参后或者在main函数中可以直接对这个变量进行操作。

1.2引用的返回:

函数返回的时候是生成了一个临时变量,这个变量具有常性,是不能对这个值进行修改的。但是如果返回的是int&的话,那么就是它的别名,那当然是可以进行操作的。(常量(const)具有常性,意味着一旦被定义为常量,它的值就不能被修改。)而且这种情况也出现在进行运算的时候,运算的结果首先也是保存在一个临时变量中。(为了方便说明,我们在后面的const的权放大和缩小处说明)

1.3引用与指针的对比:

(1)引用不需要开空间,但是指针需要开空间(但是实际上在汇编层引用实际上就是用指针的方式实现的)

(2)引用不容易出现野指针的情况,但是指针很容易就出现野指针的情况

  (3)引用在c++中没办法改变指向的对象

 (4)sizeof引用看的是引用的对象,但是指针看的是平台的

(5)引用一定是需要初始化的,但是指针是不一定需要的


2.const的权值(可以缩小,可以平移,不能放大)

从图中可以看出,权值是可以平移缩小但是不能放大的。

后面b是为了验证运算时也会产生一个临时变量,具有常性,所以后面函数传参时一般都是(const int& ~)这样只是为了保证可以传参更舒服。因为不这么写根本传不进去hh,接收一定需要用const。


3.null与nullptr

null在c++中为0,所以如果函数重载那么就会出现下面这个bug的情况

但是如果你去用c语言也会g,因为如果是传(void*)0进去的话,因为c语言它转不了int*类型,指针类型会不匹配。

在c++中,新增了一个nullptr,这个是(void*)0,但是把它当参数传入时,它会自动类型转化。


http://www.kler.cn/a/396357.html

相关文章:

  • Java中的集合类与线程安全的讨论
  • springboot 文件高效上传
  • 微服务中的技术使用与搭配:如何选择合适的工具构建高效的微服务架构
  • VPI photonics的一些使用经验(测相位 快速搜索)持续更新
  • 路由器基本原理与配置
  • 机器学习-35-提取时间序列信号的特征
  • T6识别好莱坞明星
  • maven手动上传jar到私服仓库:mvn deploy:deploy-file命令
  • linux rsync 同步拉取上传文件
  • 【SpringBoot】使用过滤器进行XSS防御
  • 在uniapp中使用canvas封装组件遇到的坑,数据被后面设备覆盖,导致数据和前面的设备一样
  • 编译原理(手绘)
  • 2024年【A特种设备相关管理(A4电梯)】新版试题及A特种设备相关管理(A4电梯)找解析
  • 【AlphaFold3】开源本地的安装及使用
  • [Mysql] Mysql的多表查询----多表关系(下)
  • 精华帖分享|浅谈金融时间序列分析与股价随机游走
  • Maven配置元素详解
  • MATLAB中的绘图技巧
  • 高并发下如何保障系统的正确性?性能与一致性博弈的技术探索
  • ⾃动化运维利器 Ansible-Jinja2
  • 【MySQL】索引原理及操作
  • 如何用Python爬虫精准获取商品历史价格信息及API数据
  • sql server into #t2 到临时表的几种用法
  • 8 软件项目管理
  • JavaScript 自动化软件:AutoX.js
  • 入门车载以太网(4) -- 传输层(TCP\UDP)