0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

指针和引用的区别及使用场景介绍

Q4MP_gh_c472c21 来源:程序喵大人 作者:程序喵大人 2022-03-11 10:24 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

先抛出两个问题:

指针和引用有什么区别?

什么时候使用指针?什么时候使用引用?

一、指针和引用的区别

首先,看一段代码:

int a = 1;int b = 2;int *c = nullptr;c = &a;int &d = b;

指针其实就是一个存放内存地址的整数,这个整数表示的是被指向的变量的地址。

引用其实就是变量的别名,就是给变量重新起了一个名字,注意引用既然是个别名,那它一定要有本体,一个人叫王二小,我们也可以给它起个别名叫二蛋,我们提到二蛋和王二小其实都是同一个人。

区别:

指针在声明时可以暂时不初始化,即pointer = nullptr,指针在生命周期内随时都可能是空指针,所以在每次使用时都要做检查,防止出现空指针异常问题,而引用却不需要做检查,因为引用永远都不会为空,它一定有本体,一定得代表某个对象,引用在创建的同时必须被初始化。

void FuncPtr(int *ptr) { if (ptr != nullptr) { cout << *ptr; }} void FuncReference(int &ref) { cout << ref;}

指针存放的是地址,指针可以被重新赋值,可以在初始化时指向一个对象,在其它时刻也可以指向另一个对象,而引用非常专一,它会从一而终,它总是指向它最初代表的那个对象。再举个例子,有一个人叫特朗普,为他起个引用别名叫历史上最傻吊的总统,这个引用一定会从一而终,即无论什么时候,历史上最傻吊的总统一定是特朗普。而美国总统可以当作个指针,一段时间可以是奥巴马,过一段时间可以是特朗普,再过一段时间可能是nullptr。

二、指针和引用的使用场景

引用的主要功能就是作为函数的参数和返回值,看一段代码:

struct A { int a;};void func(const A &a) { cout << a.a;} vector vec(10);vec[3] = 3;为什么通过vec[3] =3可以改变vector容器的值,因为[]操作符返回的就是引用,相当于为内部的变量起了一个别名,这里还可以让[]操作符返回一个指针,即*vec[3]=3,这是不是有点丑,而且不符合语法需求。

其实我们平时编程过程中可能也注意到,实际上引用可以做的事情指针都可以做,但为什么还要引用这个东西?

答案:

用恰当的工具做恰如其分的工作,指针可以毫无约束的操作内存中的任何东西,功能十分强大,但是也很危险,所以可以在恰当的时机使用引用,当你需要指向某个东西,而且一定专一,绝不会让其指向其它东西,例如有些函数参数为了避免拷贝可以使用引用,或者实现一个操作符而其语法需求无法由指针达成,例如vec[3]=3,可以使用引用,其它任何时候,都要使用指针。

引用在c++11后其实有很多知识点,具体可以参考下列文章:

左值引用、右值引用、移动语义、完美转发,你知道的不知道的都在这里

参考资料

《More Effective C++》

https://www.runoob.com/w3cnote/cpp-difference-between-pointers-and-references.html

https://blog.csdn.net/weikangc/article/details/49762929

https://www.jianshu.com/p/e548a978d737

https://zhuanlan.zhihu.com/p/63096392

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 指针
    +关注

    关注

    1

    文章

    484

    浏览量

    71677
  • 引用
    +关注

    关注

    0

    文章

    8

    浏览量

    7904

原文标题:指针和引用有什么区别?

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CW32L083有哪些应用场景

    CW32L083有哪些应用场景
    发表于 11-24 07:37

    请问CW32L011有哪些应用场景

    请问CW32L011有哪些应用场景
    发表于 11-17 06:25

    CW32L0系列都有哪些应用场景?有哪些优势?

    目前芯源的低功耗MCU比较火爆,就是CW32L0系列都有哪些应用场景?有哪些优势?
    发表于 11-14 06:03

    京东API接口的应用场景介绍

    )。这些接口基于RESTful架构,使用HTTP协议进行通信,数据格式通常为JSON,支持OAuth 2.0认证以确保安全性。下面从技术角度,详细介绍几个关键应用场景,包括其实现机制和优势。 1. 商品信息检索与展示 应用场景
    的头像 发表于 11-03 14:13 184次阅读
    京东API接口的应<b class='flag-5'>用场景</b><b class='flag-5'>介绍</b>

    淘宝API接口的技术应用场景介绍

    JSON或XML,支持OAuth 2.0认证机制以确保安全性。开发者通过这些接口可以编程式地访问淘宝的商品、订单、用户等核心数据和服务。以下从技术角度,分场景介绍其典型应用,每个场景包括技术实现细节和实际价值。 1. 商品数据获
    的头像 发表于 11-03 13:49 165次阅读
    淘宝API接口的技术应<b class='flag-5'>用场景</b><b class='flag-5'>介绍</b>

    单多模光纤应用场景一样吗

    单模光纤和多模光纤的应用场景存在显著差异,主要源于它们在传输特性、成本和适用距离上的不同。以下是两者的核心区别及典型应用场景的对比分析: 一、单模光纤与多模光纤的核心区别 二、单模光纤
    的头像 发表于 10-09 10:32 323次阅读
    单多模光纤应<b class='flag-5'>用场景</b>一样吗

    UWB应用场景

    鸿合智远|捷扬微-产品简介介绍:UWB应用场景
    的头像 发表于 05-12 10:05 740次阅读
    UWB应<b class='flag-5'>用场景</b>

    函数指针的六个常见应用场景

    用场景,并结合示例代码进行讲解。01、回调函数:解耦代码,提高灵活性回调函数是嵌入式开发中最常见的函数指针用场景之一。它允许我们在函数执行过程中,动态调用用户
    的头像 发表于 04-07 11:58 1136次阅读
    函数<b class='flag-5'>指针</b>的六个常见应<b class='flag-5'>用场景</b>

    取样示波器的技术原理和应用场景

    取样示波器,也称为采样示波器,是一种重要的电子测量仪器,其技术原理和应用场景可以归纳如下:技术原理取样示波器的根本原理是利用等效取样技术,将周期性高频(或高速)信号变换为与原来信号波形相似的低频(或
    发表于 03-12 14:34

    数据记录仪的计数原理和应用场景

    数据记录仪是一种用于测量、记录和分析各种数据的设备,其计数原理和应用场景可以归纳如下: 一、计数原理数据记录仪的计数原理主要基于传感器技术、信号处理技术以及数据存储技术。具体来说: 传感器采集
    发表于 02-24 14:28

    meshtastic的应用场景介绍

    meshtastic的应用场景介绍
    的头像 发表于 02-21 12:02 1262次阅读
    meshtastic的应<b class='flag-5'>用场景</b><b class='flag-5'>介绍</b>

    敏捷合成器的技术原理和应用场景

    敏捷合成器,作为一种高性能的信号发生器,其技术原理和应用场景值得深入探讨。技术原理敏捷合成器的技术原理主要基于先进的频率合成技术和数字信号处理技术。它通常具有宽频率范围、快速建立和可编程的相位、频率
    发表于 02-20 15:25

    脉冲信号分析仪‌的原理和应用场景

    脉冲信号分析仪是一种用于测量和分析脉冲信号的精密仪器。以下是对其原理和应用场景的详细介绍:一、原理脉冲信号分析仪的工作原理主要基于电子测量技术和信号处理技术。当脉冲信号被分析仪的接收器接收后,信号
    发表于 01-23 14:00

    混合信号分析仪的原理和应用场景

    混合信号分析仪是一种集成度高、功能强大的电子测量设备,其原理和应用场景如下:一、原理混合信号分析仪由模拟部分和数字部分组成,用于混合信号的分析。其工作原理主要包括以下几个方面: 信号采样:混合信号
    发表于 01-21 16:45

    多用示波器的原理和应用场景

    多用示波器是一种功能强大的电子测量仪器,其原理和应用场景如下:一、原理多用示波器主要是利用电子示波管的特性,将人眼无法直接观测的交变电信号转换成图像,显示在荧光屏上以便测量。具体来说,当被测信号输入
    发表于 01-09 15:42