最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++左值引用與指針的區(qū)別及說明

 更新時間:2025年03月04日 10:09:47   作者:_DCG_  
左值引用與指針的區(qū)別:左值引用是一個別名,只能綁定左值,對左值引用的訪問與訪問左值是相同的;指針是一個變量,該變量在內(nèi)存中存在真是的物理地址,該變量內(nèi)的存儲的是一個內(nèi)存地址,訪問指針變量對應(yīng)的內(nèi)容需要配合解訪問符*

C++左值引用與指針的區(qū)別

很多朋友遇到過這個問題

左值引用與指針有哪些區(qū)別?

腦子里閃過很多答案,但大部分都是各自的定義,真要說他們兩個有什么區(qū)別,有的時候還這是說不上來。

本文針對這個問題進行歸納總結(jié),希望對大家有所幫助。

先從定義說起

  • 左值引用:左值引用是一個別名,只能綁定左值,對左值引用的訪問與訪問左值是相同的
  • 指針:指針是一個變量,這個變量在內(nèi)存中存在真是的物理地址,該變量內(nèi)的存儲的是一個內(nèi)存地址,訪問指針變量對應(yīng)的內(nèi)容需要配合解訪問符*

看看下面的例子

void rreftTest(int&& ref)
{
    std::cout<<"ref = "<<ref<<std::endl;
}
int main(int argc, char *argv[])
{
    cout<<endl;

    int x = 42;
    int& ref = x;
    int* ptr = &x;
    int&& rref = 4;

    // 輸出地址
    std::cout << "x的地址: " << &x << std::endl;
    std::cout << "ref的地址: " << &ref << std::endl;
    std::cout << "ptr的地址: " << &ptr << std::endl;
    std::cout << "ptr指向的地址: " << ptr << std::endl;
    std::cout << "rref指向的地址: " << rref << std::endl;
    std::cout << "rref指向的地址: " << &rref << std::endl;
    rreftTest(rref);

    // 輸出大小
    std::cout << "引用的大小: " << sizeof(ref) << std::endl;  // 與int相同
    std::cout << "指針的大小: " << sizeof(ptr) << std::endl;  // 通常是4或8字節(jié)

    return 0;
}

//輸出如下所示:
x的地址: 0x63fdbc
ref的地址: 0x63fdbc
ptr的地址:: 0x63fdb0
ptr指向的地址: 0x63fdbc
rref指向的地址: 4
rref指向的地址: 0x63fdec
引用的大小: 4
指針的大小: 8

通過上面的例子得到如下結(jié)論

  1. 左值引用不占用額外內(nèi)存空間,它的地址與引用的左值地址相同;指針則不同,指針需要額外的內(nèi)存空間來存儲地址
  2. 引用必須在定義時初始化;指針變量可以不在定義時初始化
  3. 引用初始化綁定左值后,無法再重新綁定左值;指針則可以
  4. 不存在引用的引用,指針則可以

具體的例證程序如下:

//初始化
void initializationDifference() {
    int x = 42;
    
    // 引用必須在聲明時初始化
    int& ref = x;  // 正確
    int& ref2;     // 錯誤!引用必須初始化
    
    // 指針可以后續(xù)初始化
    int* ptr;      // 正確
    ptr = &x;      // 正確
}

void rebindingTest() {
    int x = 42;
    int y = 24;
    
    // 引用一旦綁定就不能改變
    int& ref = x;
    ref = y;    // 這是賦值操作,不是重新綁定
    
    // 指針可以隨時改變指向
    int* ptr = &x;
    ptr = &y;   // 改變指針指向
}
//重復(fù)引用
void multiLevelTest() {
    int x = 42;
    
    // 不存在引用的引用
    // int& & ref;  // 錯誤!
    
    // 可以有多級指針
    int* ptr = &x;
    int** pptr = &ptr;  // 正確
}

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • c++實現(xiàn)版本層次遍歷功能

    c++實現(xiàn)版本層次遍歷功能

    這篇文章主要介紹了c++實現(xiàn)版本層次遍歷功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • C++庫std::flush的具體使用

    C++庫std::flush的具體使用

    std::flush是C++標(biāo)準(zhǔn)庫中的一個操作符,用于刷新輸出流,本文主要介紹了C++庫std::flush的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • 利用Matlab繪制地圖的超詳細(xì)教程

    利用Matlab繪制地圖的超詳細(xì)教程

    worldmap和usamap是axesm的子類,worldmap是用于生成世界地圖坐標(biāo)區(qū)域,usamap用于生成美國地圖坐標(biāo)區(qū)域。本文將詳細(xì)為大家介紹如何利用這兩個函數(shù)繪制地圖,需要的可以參考一下
    2022-02-02
  • C++ 流插入和流提取運算符的重載的實現(xiàn)

    C++ 流插入和流提取運算符的重載的實現(xiàn)

    這篇文章主要介紹了C++ 流插入和流提取運算符的重載的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • C語言實現(xiàn)兩個矩陣相乘

    C語言實現(xiàn)兩個矩陣相乘

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)兩個矩陣相乘的程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • C++實現(xiàn)十六進制字符串轉(zhuǎn)換成int整形值的示例

    C++實現(xiàn)十六進制字符串轉(zhuǎn)換成int整形值的示例

    今天小編就為大家分享一篇關(guān)于C++實現(xiàn)十六進制字符串轉(zhuǎn)換成int整形值的示例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Vs2019+Qt+Opencv環(huán)境配置心得(圖文)

    Vs2019+Qt+Opencv環(huán)境配置心得(圖文)

    這篇文章主要介紹了Vs2019+Qt+Opencv環(huán)境配置心得(圖文),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • C語言自研定時器計劃任務(wù)語法詳解

    C語言自研定時器計劃任務(wù)語法詳解

    市面主流定時器計劃任務(wù)語法: cron ,但是使用起來非常難受,設(shè)計的比較非人性話語法,我想一般人都沒幾個記住的,所以本文將自研定時器計劃任務(wù)語法,需要的可以參考一下
    2022-09-09
  • C語言超詳細(xì)講解循環(huán)與分支語句基礎(chǔ)

    C語言超詳細(xì)講解循環(huán)與分支語句基礎(chǔ)

    各位小伙伴們,今天給大家?guī)淼氖茄h(huán)與分支語句,本篇將會向大家介紹這些語句的格式和使用的基本方法,感興趣的朋友來看看吧
    2022-04-04
  • C語言編程銀行ATM存取款系統(tǒng)實現(xiàn)源碼

    C語言編程銀行ATM存取款系統(tǒng)實現(xiàn)源碼

    這篇文章主要為大家介紹了C語言編程銀行ATM存取款系統(tǒng)實現(xiàn)的源碼示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-11-11

最新評論

山丹县| 民和| 连城县| 韶关市| 天镇县| 衡阳市| 和龙市| 嘉禾县| 两当县| 台湾省| 顺义区| 偏关县| 黄骅市| 什邡市| 天柱县| 香港 | 南召县| 静海县| 武清区| 色达县| 界首市| 汝阳县| 怀宁县| 双辽市| 五家渠市| 高平市| 禄丰县| 大悟县| 玉屏| 若尔盖县| 普定县| 临西县| 石台县| 上饶市| 车致| 泾川县| 宁安市| 红河县| 徐州市| 江口县| 巩留县|