C++引入了引用這個類型,引用實際是給變量起了一個別名,實際上,引用只是別名沒有獨立的內(nèi)存空間,和它所引用的變量共享內(nèi)存空間。

變量的屬性有兩種:名稱和空間。
而引用只有名稱沒有獨立的空間。
對引用的改變就是對它所引用的變量的改變。
格式:int a = 1; int& b = a;
Δ定義引用時一定要初始化,指明該引用變量是誰的別名。
Δ引用一經(jīng)初始化不能重新指向其他變量。
實際引用中,引用一般用作參數(shù)傳遞與返回值。
- # include <iostream>
- usingnamespace
- intvoid
- int
- //定義引用
- int//引用必須初始化
- //int& refval; error 引用必須初始化
- "val = "
- //實際上改變的是val變量
- "refval = "//結(jié)果是200
- int
- //這只是簡單的賦值,不代表refval引用至val2這個變量
- "val2 = "//500
- return
運行結(jié)果:

const引用,指向const對象的引用
const int ival = 1024; const int& refval = ival;
Δ普通變量引用const變量是非法的
const int ival = 1024; int& refval = ival ; //error
Δconst變量引用普通變量是合法的。
- # include<iostream>
- usingnamespace
- intvoid
- constint
- constint
- // int& ref2 = val; error,nonconst reference to a const object
- "refval = "
- int
- constint//允許的
- //ref3 = 200; 錯誤的,不能更改const常量
- "ref3 = "
- double
- //warning C4244: “初始化”: 從“double”轉(zhuǎn)換到“const int”,可能丟失數(shù)據(jù)
- constint//等價于產(chǎn)生了一個臨時變量,int temp = val3; const int& ref4 = temp
- "val3 = "
- "ref4 = "
- // int& ref5 = val3; 非const不能引用double類型的變量
- return
運行結(jié)果:

引用做函數(shù)參數(shù)傳遞:
- //按引用傳遞
- //swap(int &a, int &b);
- //C語言里面:
- // 值傳遞 形參不能更改實參
- // 指針傳遞
- //地址傳遞方式通過形參的改變使相應(yīng)的實參改變
- //引用傳遞也是可以的
- //引用作為參數(shù)傳遞
- # include <iostream>
- usingnamespace
- voidintint
- intvoid
- int
- int
- "交換前""a = "" b = "
- //在函數(shù)調(diào)用的時候,引用被初始化 , x = a ,y = b
- "交換后""a = "" b = "
- return
- voidintint//形參是引用,調(diào)用的時候被初始化
- int
運行結(jié)果:

下面總結(jié)下引用于指針的區(qū)別:
引用訪問一個變量是直接訪問,
指針是間接訪問
引用只是別名,本身不分配內(nèi)存空間
指針本身就是一個變量,有自己的內(nèi)存空間
引用一經(jīng)初始化就不能再引用其他變量,
指針初始化后引用其他變量,除非const
值傳遞的時候,實參要初始化形參,就好分配一個形參變量,將實參內(nèi)容拷貝到形參
如果是類傳遞的話,還要調(diào)用拷貝函數(shù)
指針傳遞 實參初始化形參的時候也是要分配空間的,
引用傳遞 實參初始化形參時不分配空間,效率會高點
指針傳遞 本質(zhì)還是值傳遞,如果要修改指針的地址,單純用指針傳遞也不能的
僅僅修改指針指向的內(nèi)容,**,指針引用*&
引用作為函數(shù)返回值:
- //引用作為返回值,將函數(shù)放在賦值運算符的左邊
- # include <iostream>
- usingnamespace
- int
- intint
- return
- //函數(shù)返回引用,引用在函數(shù)返回的時候初始化
- //index(3) 在函數(shù)返回的時候被初始化為a[3]
- intvoid
- //引用作為函數(shù)返回值,使得函數(shù)可以放在運算符的左邊
- "a[3] = "//100
- return
運行結(jié)果:

不能返回對局部變量的引用,或自動化變量的引用:
運行結(jié)果:

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)站題目:C++引用的學(xué)習(xí)-創(chuàng)新互聯(lián)
本文鏈接:http://www.chinadenli.net/article42/pdcec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、品牌網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計公司、軟件開發(fā)、品牌網(wǎng)站建設(shè)、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容