一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

指針和引用的區(qū)別及使用場(chǎng)景介紹

Q4MP_gh_c472c21 ? 來源:程序喵大人 ? 作者:程序喵大人 ? 2022-03-11 10:24 ? 次閱讀

先拋出兩個(gè)問題:

指針和引用有什么區(qū)別?

什么時(shí)候使用指針?什么時(shí)候使用引用?

一、指針和引用的區(qū)別

首先,看一段代碼:

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

指針其實(shí)就是一個(gè)存放內(nèi)存地址的整數(shù),這個(gè)整數(shù)表示的是被指向的變量的地址。

引用其實(shí)就是變量的別名,就是給變量重新起了一個(gè)名字,注意引用既然是個(gè)別名,那它一定要有本體,一個(gè)人叫王二小,我們也可以給它起個(gè)別名叫二蛋,我們提到二蛋和王二小其實(shí)都是同一個(gè)人。

區(qū)別:

指針在聲明時(shí)可以暫時(shí)不初始化,即pointer = nullptr,指針在生命周期內(nèi)隨時(shí)都可能是空指針,所以在每次使用時(shí)都要做檢查,防止出現(xiàn)空指針異常問題,而引用卻不需要做檢查,因?yàn)橐糜肋h(yuǎn)都不會(huì)為空,它一定有本體,一定得代表某個(gè)對(duì)象,引用在創(chuàng)建的同時(shí)必須被初始化。

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

指針存放的是地址,指針可以被重新賦值,可以在初始化時(shí)指向一個(gè)對(duì)象,在其它時(shí)刻也可以指向另一個(gè)對(duì)象,而引用非常專一,它會(huì)從一而終,它總是指向它最初代表的那個(gè)對(duì)象。再舉個(gè)例子,有一個(gè)人叫特朗普,為他起個(gè)引用別名叫歷史上最傻吊的總統(tǒng),這個(gè)引用一定會(huì)從一而終,即無論什么時(shí)候,歷史上最傻吊的總統(tǒng)一定是特朗普。而美國(guó)總統(tǒng)可以當(dāng)作個(gè)指針,一段時(shí)間可以是奧巴馬,過一段時(shí)間可以是特朗普,再過一段時(shí)間可能是nullptr。

二、指針和引用的使用場(chǎng)景

引用的主要功能就是作為函數(shù)的參數(shù)和返回值,看一段代碼:

struct A { int a;};void func(const A &a) { cout << a.a;} vector vec(10);vec[3] = 3;為什么通過vec[3] =3可以改變vector容器的值,因?yàn)閇]操作符返回的就是引用,相當(dāng)于為內(nèi)部的變量起了一個(gè)別名,這里還可以讓[]操作符返回一個(gè)指針,即*vec[3]=3,這是不是有點(diǎn)丑,而且不符合語法需求。

其實(shí)我們平時(shí)編程過程中可能也注意到,實(shí)際上引用可以做的事情指針都可以做,但為什么還要引用這個(gè)東西?

答案:

用恰當(dāng)?shù)墓ぞ咦銮∪缙浞值墓ぷ鳎羔樋梢院翢o約束的操作內(nèi)存中的任何東西,功能十分強(qiáng)大,但是也很危險(xiǎn),所以可以在恰當(dāng)?shù)臅r(shí)機(jī)使用引用,當(dāng)你需要指向某個(gè)東西,而且一定專一,絕不會(huì)讓其指向其它東西,例如有些函數(shù)參數(shù)為了避免拷貝可以使用引用,或者實(shí)現(xiàn)一個(gè)操作符而其語法需求無法由指針達(dá)成,例如vec[3]=3,可以使用引用,其它任何時(shí)候,都要使用指針。

引用在c++11后其實(shí)有很多知識(shí)點(diǎn),具體可以參考下列文章:

左值引用、右值引用、移動(dòng)語義、完美轉(zhuǎn)發(fā),你知道的不知道的都在這里

參考資料

《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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 指針
    +關(guān)注

    關(guān)注

    1

    文章

    484

    瀏覽量

    70920
  • 引用
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    7822

原文標(biāo)題:指針和引用有什么區(qū)別?

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    函數(shù)指針的六個(gè)常見應(yīng)用場(chǎng)景

    應(yīng)用場(chǎng)景,并結(jié)合示例代碼進(jìn)行講解。01、回調(diào)函數(shù):解耦代碼,提高靈活性回調(diào)函數(shù)是嵌入式開發(fā)中最常見的函數(shù)指針應(yīng)用場(chǎng)景之一。它允許我們?cè)诤瘮?shù)執(zhí)行過程中,動(dòng)態(tài)調(diào)用用戶
    的頭像 發(fā)表于 04-07 11:58 ?243次閱讀
    函數(shù)<b class='flag-5'>指針</b>的六個(gè)常見應(yīng)<b class='flag-5'>用場(chǎng)景</b>

    取樣示波器的技術(shù)原理和應(yīng)用場(chǎng)景

    取樣示波器,也稱為采樣示波器,是一種重要的電子測(cè)量?jī)x器,其技術(shù)原理和應(yīng)用場(chǎng)景可以歸納如下:技術(shù)原理取樣示波器的根本原理是利用等效取樣技術(shù),將周期性高頻(或高速)信號(hào)變換為與原來信號(hào)波形相似的低頻(或
    發(fā)表于 03-12 14:34

    數(shù)據(jù)記錄儀的計(jì)數(shù)原理和應(yīng)用場(chǎng)景

    數(shù)據(jù)記錄儀是一種用于測(cè)量、記錄和分析各種數(shù)據(jù)的設(shè)備,其計(jì)數(shù)原理和應(yīng)用場(chǎng)景可以歸納如下: 一、計(jì)數(shù)原理數(shù)據(jù)記錄儀的計(jì)數(shù)原理主要基于傳感器技術(shù)、信號(hào)處理技術(shù)以及數(shù)據(jù)存儲(chǔ)技術(shù)。具體來說: 傳感器采集
    發(fā)表于 02-24 14:28

    meshtastic的應(yīng)用場(chǎng)景介紹

    meshtastic的應(yīng)用場(chǎng)景介紹
    的頭像 發(fā)表于 02-21 12:02 ?395次閱讀
    meshtastic的應(yīng)<b class='flag-5'>用場(chǎng)景</b><b class='flag-5'>介紹</b>

    敏捷合成器的技術(shù)原理和應(yīng)用場(chǎng)景

    敏捷合成器,作為一種高性能的信號(hào)發(fā)生器,其技術(shù)原理和應(yīng)用場(chǎng)景值得深入探討。技術(shù)原理敏捷合成器的技術(shù)原理主要基于先進(jìn)的頻率合成技術(shù)和數(shù)字信號(hào)處理技術(shù)。它通常具有寬頻率范圍、快速建立和可編程的相位、頻率
    發(fā)表于 02-20 15:25

    脈沖信號(hào)分析儀?的原理和應(yīng)用場(chǎng)景

    脈沖信號(hào)分析儀是一種用于測(cè)量和分析脈沖信號(hào)的精密儀器。以下是對(duì)其原理和應(yīng)用場(chǎng)景的詳細(xì)介紹:一、原理脈沖信號(hào)分析儀的工作原理主要基于電子測(cè)量技術(shù)和信號(hào)處理技術(shù)。當(dāng)脈沖信號(hào)被分析儀的接收器接收后,信號(hào)
    發(fā)表于 01-23 14:00

    混合信號(hào)分析儀的原理和應(yīng)用場(chǎng)景

    混合信號(hào)分析儀是一種集成度高、功能強(qiáng)大的電子測(cè)量設(shè)備,其原理和應(yīng)用場(chǎng)景如下:一、原理混合信號(hào)分析儀由模擬部分和數(shù)字部分組成,用于混合信號(hào)的分析。其工作原理主要包括以下幾個(gè)方面: 信號(hào)采樣:混合信號(hào)
    發(fā)表于 01-21 16:45

    低電平靈敏專用儀器的技術(shù)原理和應(yīng)用場(chǎng)景

    低電平靈敏專用儀器是一種高精度、高靈敏度的測(cè)量工具,廣泛應(yīng)用于各種需要精確測(cè)量微弱信號(hào)的場(chǎng)合。以下是對(duì)其技術(shù)原理和應(yīng)用場(chǎng)景的詳細(xì)介紹:一、技術(shù)原理低電平靈敏專用儀器的工作原理基于精密的電路設(shè)計(jì)和先進(jìn)
    發(fā)表于 12-06 14:45

    倍頻器的技術(shù)原理和應(yīng)用場(chǎng)景

    倍頻器是一種用于將輸入信號(hào)的頻率倍增的電子設(shè)備,以下是關(guān)于倍頻器的技術(shù)原理和應(yīng)用場(chǎng)景的詳細(xì)解釋:技術(shù)原理倍頻器的技術(shù)原理主要基于非線性元件(如二極管、晶體管等)的特性和頻率變換技術(shù)。 非線性元件
    發(fā)表于 11-29 14:49

    系統(tǒng)放大器的技術(shù)原理和應(yīng)用場(chǎng)景

    系統(tǒng)放大器是一種重要的電子設(shè)備,其技術(shù)原理和應(yīng)用場(chǎng)景都具有一定的專業(yè)性和廣泛性。以下是對(duì)系統(tǒng)放大器的技術(shù)原理和應(yīng)用場(chǎng)景的詳細(xì)介紹:一、技術(shù)原理系統(tǒng)放大器的工作原理基于電子器件的非線性特性,通過控制
    發(fā)表于 11-18 14:46

    汽車?yán)走_(dá)回波發(fā)生器的技術(shù)原理和應(yīng)用場(chǎng)景

    汽車?yán)走_(dá)回波發(fā)生器是一種新型的雷達(dá)測(cè)試設(shè)備,以下是對(duì)其技術(shù)原理和應(yīng)用場(chǎng)景的詳細(xì)介紹:技術(shù)原理汽車?yán)走_(dá)設(shè)備在發(fā)送電磁波信號(hào)時(shí),若遇到目標(biāo)物體,該物體會(huì)反射出回波信號(hào),隨后被雷達(dá)接收機(jī)捕獲。這些回波信號(hào)
    發(fā)表于 11-15 14:06

    實(shí)時(shí)示波器的技術(shù)原理和應(yīng)用場(chǎng)景

    實(shí)時(shí)示波器是一種高性能的電子測(cè)量?jī)x器,其技術(shù)原理和應(yīng)用場(chǎng)景對(duì)于電子工程和通信技術(shù)領(lǐng)域具有重要意義。以下是對(duì)實(shí)時(shí)示波器的技術(shù)原理和應(yīng)用場(chǎng)景的詳細(xì)解釋:一、技術(shù)原理實(shí)時(shí)示波器的工作原理基于電子束在熒光屏
    發(fā)表于 10-23 14:22

    源測(cè)量單元設(shè)備的技術(shù)原理和應(yīng)用場(chǎng)景

    源測(cè)量單元(SMU)設(shè)備是一種集成了精密電源(PPS)和高性能數(shù)字萬用表(DMM)功能的測(cè)試設(shè)備。以下是對(duì)其技術(shù)原理和應(yīng)用場(chǎng)景的詳細(xì)解析:一、技術(shù)原理 集成功能: SMU在單個(gè)儀器中集成了電源
    發(fā)表于 10-22 11:10

    超聲波測(cè)厚儀的技術(shù)原理和應(yīng)用場(chǎng)景

    超聲波測(cè)厚儀的技術(shù)原理和應(yīng)用場(chǎng)景詳細(xì)如下:技術(shù)原理超聲波測(cè)厚儀利用超聲波脈沖反射原理來測(cè)量材料的厚度。具體工作原理如下: 發(fā)射超聲波脈沖:測(cè)厚儀的探頭(也稱為換能器)向被測(cè)物體發(fā)射一束高頻超聲波脈沖
    發(fā)表于 09-27 15:06

    面試???1:函數(shù)指針指針函數(shù)、數(shù)組指針指針數(shù)組

    在嵌入式開發(fā)領(lǐng)域,函數(shù)指針、指針函數(shù)、數(shù)組指針指針數(shù)組是一些非常重要但又容易混淆的概念。理解它們的特性和應(yīng)用場(chǎng)景,對(duì)于提升嵌入式程序的效率
    的頭像 發(fā)表于 08-10 08:11 ?1227次閱讀
    面試???1:函數(shù)<b class='flag-5'>指針</b>與<b class='flag-5'>指針</b>函數(shù)、數(shù)組<b class='flag-5'>指針</b>與<b class='flag-5'>指針</b>數(shù)組