標(biāo)題: [C++]筆記二十一:引用的基礎(chǔ)知識(shí) [打印本頁(yè)]
作者: tyyhmtyyhm 時(shí)間: 2018-3-8 22:56
標(biāo)題: [C++]筆記二十一:引用的基礎(chǔ)知識(shí)
引用的基礎(chǔ)知識(shí)引入:
變量名,實(shí)際上是一段連續(xù)存儲(chǔ)空間的別名,是一個(gè)標(biāo)號(hào)(門牌號(hào))。
程序中通過(guò)變量來(lái)申請(qǐng)并命名內(nèi)存空間,通過(guò)變量的名字可以使用存儲(chǔ)空間。
問(wèn)題:對(duì)一段連續(xù)的內(nèi)存空間只能取一個(gè)別名嗎?
第一,引用的概念
(1)在C++中新增加了引用的概念;
(2)引用可以看作一個(gè)已定義變量的別名
(3)引用的語(yǔ)法:Type& name = var;
(4)引用做函數(shù)參數(shù)(引用作為函數(shù)參數(shù)聲明時(shí)不進(jìn)行初始化)
比如,有這么一個(gè)人,我們稱作“姥姥”,也有人稱呼是“外婆”,有人問(wèn)你你姥姥是誰(shuí)?或者問(wèn)你你外婆是誰(shuí)?我們知道這兩個(gè)稱呼指的是同一個(gè)人,你媽給了你姥姥一千塊錢,你姥姥多了一千塊錢,那么你外婆也就多了一千塊錢,你外婆又給了你五百塊錢壓歲錢,那你姥姥也就是少了五百塊錢。姥姥 == 外婆,通過(guò)修改外婆持有的資產(chǎn)數(shù)額,就修改了姥姥持有的資產(chǎn)數(shù)額!
運(yùn)行以下程序,變量a的別名定義為b,我們修改a的值就修改了b的值,修改b的值就修改了a的值。
圖片12.png (24.43 KB, 下載次數(shù): 132)
下載附件
2018-3-8 22:56 上傳
圖片13.png (9.46 KB, 下載次數(shù): 127)
下載附件
2018-3-8 22:56 上傳
第二,通過(guò)引用交換兩個(gè)變量的值
圖片14.png (20.02 KB, 下載次數(shù): 121)
下載附件
2018-3-8 22:56 上傳
圖片15.png (22.72 KB, 下載次數(shù): 133)
下載附件
2018-3-8 22:56 上傳
我們知道這個(gè)程序是無(wú)法實(shí)現(xiàn)交換兩個(gè)數(shù)值的,如果想交換兩個(gè)數(shù)值,按照以前的辦法就是使用指針,這里不多說(shuō)。
我們學(xué)習(xí)了引用之后可以通過(guò)引用來(lái)實(shí)現(xiàn)交換兩個(gè)變量的值。
如下程序,x、y是實(shí)參,a、b是形參,將實(shí)參x、y賦值給形參a、b,a、b就是x、和y的別名,改a、b就是把x、y的數(shù)值改了。
圖片16.png (21.02 KB, 下載次數(shù): 143)
下載附件
2018-3-8 22:56 上傳
圖片17.png (31.44 KB, 下載次數(shù): 136)
下載附件
2018-3-8 22:56 上傳
最后說(shuō)明一點(diǎn):引用作為函數(shù)參數(shù)聲明時(shí)不進(jìn)行初始化。
注意:在寫(xiě)程序時(shí),最初定義的函數(shù)是swap,調(diào)用函數(shù)時(shí)發(fā)現(xiàn)swap(x,y)和swap(&x,&y)都可以編譯運(yùn)行成功,匪夷所思!
原來(lái)C++自己有一個(gè)swap函數(shù),因?yàn)槲覍⑽覍?xiě)的swap函數(shù)定義屏蔽后,發(fā)現(xiàn)依舊可以調(diào)用該函數(shù)!因此,后來(lái)改為myswap函數(shù)。
【C++】筆記系列均為原創(chuàng),轉(zhuǎn)載請(qǐng)注明轉(zhuǎn)自微號(hào):Lightspeed-Tech 或 AutoCode
更多精彩資料,請(qǐng)關(guān)注!
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |