C++引用的學(xué)習(xí)-創(chuàng)新互聯(lián)

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

成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)林口,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

  變量的屬性有兩種:名稱和空間。

  而引用只有名稱沒有獨(dú)立的空間。

  對(duì)引用的改變就是對(duì)它所引用的變量的改變。

  格式:int a = 1; int& b = a;

   Δ定義引用時(shí)一定要初始化,指明該引用變量是誰的別名。

   Δ引用一經(jīng)初始化不能重新指向其他變量。

   實(shí)際引用中,引用一般用作參數(shù)傳遞與返回值。

  1. # include <iostream>
  2. usingnamespace
  3. intvoid
  4. int
  5. //定義引用
  6. int//引用必須初始化
  7. //int& refval; error  引用必須初始化
  8. "val =    "
  9. //實(shí)際上改變的是val變量
  10. "refval = "//結(jié)果是200
  11. int
  12. //這只是簡(jiǎn)單的賦值,不代表refval引用至val2這個(gè)變量   
  13. "val2 =   "//500
  14. return

運(yùn)行結(jié)果:

C++引用的學(xué)習(xí)

  const引用,指向const對(duì)象的引用

   const int ival = 1024; const int& refval = ival;

  Δ普通變量引用const變量是非法的

  const int ival = 1024;  int& refval = ival ; //error

  Δconst變量引用普通變量是合法的。

  1. # include<iostream>
  2. usingnamespace
  3. intvoid
  4. constint
  5. constint
  6. //  int& ref2 = val;  error,nonconst reference to a const object
  7. "refval = "
  8. int
  9. constint//允許的
  10. //ref3 = 200; 錯(cuò)誤的,不能更改const常量
  11. "ref3   = "
  12. double
  13. //warning C4244: “初始化”: 從“double”轉(zhuǎn)換到“const int”,可能丟失數(shù)據(jù)
  14. constint//等價(jià)于產(chǎn)生了一個(gè)臨時(shí)變量,int temp = val3; const int& ref4 = temp
  15. "val3   = "
  16. "ref4   = "
  17. //  int& ref5 = val3;   非const不能引用double類型的變量
  18. return

運(yùn)行結(jié)果:

C++引用的學(xué)習(xí)

 引用做函數(shù)參數(shù)傳遞:

  1. //按引用傳遞
  2. //swap(int &a, int &b);
  3. //C語言里面:
  4. // 值傳遞    形參不能更改實(shí)參
  5. // 指針傳遞
  6. //地址傳遞方式通過形參的改變使相應(yīng)的實(shí)參改變
  7. //引用傳遞也是可以的
  8. //引用作為參數(shù)傳遞
  9. # include <iostream>
  10. usingnamespace
  11. voidintint
  12. intvoid
  13. int
  14. int
  15. "交換前""a = "" b = "
  16. //在函數(shù)調(diào)用的時(shí)候,引用被初始化 , x = a ,y = b
  17. "交換后""a = "" b = "
  18. return
  19. voidintint//形參是引用,調(diào)用的時(shí)候被初始化
  20. int

運(yùn)行結(jié)果:

C++引用的學(xué)習(xí)

下面總結(jié)下引用于指針的區(qū)別:

引用訪問一個(gè)變量是直接訪問,

指針是間接訪問

引用只是別名,本身不分配內(nèi)存空間

指針本身就是一個(gè)變量,有自己的內(nèi)存空間

引用一經(jīng)初始化就不能再引用其他變量,

指針初始化后引用其他變量,除非const

值傳遞的時(shí)候,實(shí)參要初始化形參,就好分配一個(gè)形參變量,將實(shí)參內(nèi)容拷貝到形參

如果是類傳遞的話,還要調(diào)用拷貝函數(shù)

指針傳遞 實(shí)參初始化形參的時(shí)候也是要分配空間的,

引用傳遞 實(shí)參初始化形參時(shí)不分配空間,效率會(huì)高點(diǎn)

指針傳遞 本質(zhì)還是值傳遞,如果要修改指針的地址,單純用指針傳遞也不能的

僅僅修改指針指向的內(nèi)容,**,指針引用*&

引用作為函數(shù)返回值:

  1. //引用作為返回值,將函數(shù)放在賦值運(yùn)算符的左邊
  2. # include <iostream>
  3. usingnamespace
  4. int
  5. intint
  6. return
  7. //函數(shù)返回引用,引用在函數(shù)返回的時(shí)候初始化
  8. //index(3) 在函數(shù)返回的時(shí)候被初始化為a[3]
  9. intvoid
  10. //引用作為函數(shù)返回值,使得函數(shù)可以放在運(yùn)算符的左邊
  11. "a[3] = "//100
  12. return

 運(yùn)行結(jié)果:

C++引用的學(xué)習(xí)

不能返回對(duì)局部變量的引用,或自動(dòng)化變量的引用:

  • //不能返回對(duì)局部變量的引用,或自動(dòng)化變量的引用 
  •  
  • # include <iostream> 
  • using namespace std; 
  •  
  • int& add(int a, int b) 
  •     int sum; 
  •     sum = a+b; 
  •      
  •     return sum; 
  • int main(void) 
  •     int n = add(3,4); 
  • //n2是引用沒有自己獨(dú)立的空間,依賴于所引用的變量 
  • //如果n2所引用的變量生命期已經(jīng)結(jié)束了, 
  • //n2也就是無用的引用,也就是不確定的 
  •     int& n2 = add(5,6);  
  •     //cout << "n2 =" << endl; 
  •     cout << "n = " << n  << endl; 
  •     cout << "n2 =" << n2 << endl;//輸出不確定的數(shù) 
  •      
  •     return 0; 

運(yùn)行結(jié)果:

C++引用的學(xué)習(xí)

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站題目:C++引用的學(xué)習(xí)-創(chuàng)新互聯(lián)
本文鏈接:http://muchs.cn/article42/pdcec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航品牌網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)公司、軟件開發(fā)、品牌網(wǎng)站建設(shè)、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化