久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

        手機(jī)站
        千鋒教育

        千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

        千鋒教育

        掃一掃進(jìn)入千鋒手機(jī)站

        領(lǐng)取全套視頻
        千鋒教育

        關(guān)注千鋒學(xué)習(xí)站小程序
        隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

        當(dāng)前位置:首頁  >  技術(shù)干貨  > 為什么不存在引用的數(shù)組?

        為什么不存在引用的數(shù)組?

        來源:千鋒教育
        發(fā)布人:xqq
        時(shí)間: 2023-10-11 08:45:35 1696985135

        一、為什么不存在引用的數(shù)組

        因?yàn)閿?shù)組是存放對象的地方,引用不是一個(gè)對象。指針和引用最大的區(qū)別就是指針是一個(gè)對象,引用不是對象。引用和指針不同。引用只是別名,沒有確定的大小,必須引用一個(gè)確定存在的變量。

        如果給了一個(gè)引用的數(shù)組,該如何分配空間呢?指針可以給一個(gè)NULL值或者nullptr,但是引用不行。

        沒有引用數(shù)組的原因

        (1)引用數(shù)組指的是引用類型的數(shù)組,也就是數(shù)組的各個(gè)成員是引用&類型,這是在c++中不能實(shí)現(xiàn)的

        (2)c++中,引用可以說只是某個(gè)變量的別名,所謂別名,是和指針類型區(qū)分開的:指針類型也可以

        指向某個(gè)變量,但指針類型本身也是一個(gè)變量,而引用實(shí)際上不是一個(gè)變量。更本質(zhì)來說,可以

        理解為引用沒有自身的地址,不占用內(nèi)存空間(這里為了簡化問題可以這樣考慮)。因此,

        聲明引用數(shù)組沒有辦法分配空間,因?yàn)楦揪蜎]有空間可以分配給引用。所以不能聲明和定義引用數(shù)組

        (3)C++不支持傳統(tǒng)意義的復(fù)制:

        傳統(tǒng)的復(fù)制為:int a = b;

        這里a和b在內(nèi)存中分別占用不同的內(nèi)存空間,但是內(nèi)容一致。

        如果int& a = b; 這個(gè)時(shí)候,內(nèi)存中a并不被分配內(nèi)存,所以沒有復(fù)制可言。

        所以對于數(shù)組元素是引用來說,沒法完成元素的復(fù)制操作,沒有給數(shù)組分配內(nèi)存,所以數(shù)組中的元素不能是引用。

        延伸閱讀:

        二、數(shù)組的引用的作用(存在)

        (1)作為形參(防止數(shù)組退化為指針)

        int func(int array[]);

        int func(int array[10]);

        int func(int* array);

        在func中是無法知道數(shù)組的大小,如果開發(fā)者必須提前知道數(shù)組的大小,就需要用到數(shù)組的引用做參數(shù)

        例如,int(&a)[2],可以有效的防止數(shù)組退化。也就是,數(shù)組作為函數(shù)參數(shù)傳遞過去后,仍然是一個(gè)數(shù)組。

        優(yōu)點(diǎn):節(jié)省內(nèi)存消耗,不用拷貝一份數(shù)組,直接使用原數(shù)組(甚至可以修改原數(shù)組)

        #include

        using namespace std;

        int func(int(&a)[6])

        {

        ??? int count = 0;

        ??? for (int i = 0; i < 6; i++)

        ??? {

        ?????? count += a[i];

        ??? }

        ??? return count;

        }

        int main()

        {

        ??? int a1[6] = { 1,2,3,4,5,6 };

        ??? int count = func(a1);

        ??? cout << “count:” << count << endl;

        ??? return 0;

        }

        代碼安全性提高:

        如果將 int a1[6] = { 1,2,3,4,5,6 }; 改為 int a1[5] = { 1,2,3,4,5 };

        編譯會(huì)報(bào)錯(cuò)說明編譯時(shí)將進(jìn)行數(shù)組長度的檢查

        (2)作為返回類型

        函數(shù)不能直接返回?cái)?shù)組,但是可以返回?cái)?shù)組的指針和數(shù)組的引用,還需要注意,返回的不能是棧對象,

        因?yàn)闂ο蠛芸鞎?huì)被銷毀

        有關(guān)定義:

        題目:編寫一個(gè)函數(shù)的聲明,使其返回包含10個(gè)string對象的數(shù)組的引用

        //不用類型別名

        string(&func(形參))[10];

        //類型別名

        using arr = string[10];

        arr& func(形參);

        typedef string(&arr)[10];

        arr func(形參);

        //尾置返回類型

        auto func(形參)->string(&)[10];

        //decltype關(guān)鍵字

        string ss[10];

        decltype(ss) &func(形參)

        聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
        10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
        請您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
        免費(fèi)領(lǐng)取
        今日已有369人領(lǐng)取成功
        劉同學(xué) 138****2860 剛剛成功領(lǐng)取
        王同學(xué) 131****2015 剛剛成功領(lǐng)取
        張同學(xué) 133****4652 剛剛成功領(lǐng)取
        李同學(xué) 135****8607 剛剛成功領(lǐng)取
        楊同學(xué) 132****5667 剛剛成功領(lǐng)取
        岳同學(xué) 134****6652 剛剛成功領(lǐng)取
        梁同學(xué) 157****2950 剛剛成功領(lǐng)取
        劉同學(xué) 189****1015 剛剛成功領(lǐng)取
        張同學(xué) 155****4678 剛剛成功領(lǐng)取
        鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
        董同學(xué) 138****2867 剛剛成功領(lǐng)取
        周同學(xué) 136****3602 剛剛成功領(lǐng)取
        相關(guān)推薦HOT
        matlab稀疏矩陣使用的是什么數(shù)據(jù)結(jié)構(gòu)?

        一、matlab稀疏矩陣使用的數(shù)據(jù)結(jié)構(gòu)Matlab中的稀疏矩陣(sparse matrix)使用的是壓縮列(Compressed Column)存儲(chǔ)方式,也叫CCS存儲(chǔ)方式,它是...詳情>>

        2023-10-11 10:35:12
        B+樹查詢的穩(wěn)定性為什么重要?

        一、B+樹查詢的穩(wěn)定性為什么重要首先最大的優(yōu)勢還是磁盤IO和范圍,從我個(gè)人的看法看,穩(wěn)定性(每次查詢必須從根走到葉子節(jié)點(diǎn))這意味行為可預(yù)估...詳情>>

        2023-10-11 09:55:33
        HDFS和raid5各有什么優(yōu)劣?

        一、HDFS和raid5的優(yōu)劣勢1、架構(gòu)設(shè)計(jì)HDFS的設(shè)計(jì)目標(biāo)是支持大數(shù)據(jù)存儲(chǔ)和分析,具有高可靠性和高可擴(kuò)展性。它使用多臺(tái)服務(wù)器組成一個(gè)集群,通過分...詳情>>

        2023-10-11 09:54:21
        C語言中List是什么?

        一、C語言中的List在C語言中,“List”是一個(gè)抽象的數(shù)據(jù)類型,表示一組有序的數(shù)據(jù)元素。List可以實(shí)現(xiàn)各種數(shù)據(jù)結(jié)構(gòu),如鏈表、數(shù)組、棧和隊(duì)列等,...詳情>>

        2023-10-11 09:36:59
        C數(shù)據(jù)結(jié)構(gòu)與算法是什么?

        一、C數(shù)據(jù)結(jié)構(gòu)與算法C數(shù)據(jù)結(jié)構(gòu)就是指一組數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)。算法就是操作數(shù)據(jù)的一組方法。數(shù)據(jù)結(jié)構(gòu)和算法是相輔相成的。數(shù)據(jù)結(jié)構(gòu)是為算法服務(wù)的,...詳情>>

        2023-10-11 09:30:58
        快速通道
        璧山县| 噶尔县| 宣城市| 京山县| 太原市| 彰化市| 凯里市| 江门市| 甘洛县| 山西省| 郑州市| 高平市| 新干县| 广西| 多伦县| 星子县| 枣庄市| 大新县| 泌阳县| 老河口市| 维西| 鄯善县| 宜川县| 台东市| 双牌县| 泰和县| 太仆寺旗| 抚顺市| 板桥市| 深圳市| 海盐县| 咸丰县| 衡南县| 剑阁县| 兖州市| 屏东市| 乌鲁木齐市| 华安县| 卢龙县| 衡东县| 红河县|