時(shí)間:2018-10-14 00:00:00 來(lái)源:信盈達(dá) 作者:信盈達(dá)
引用:一個(gè)變量的別名,為什么引入別名呢?原因是我們想定義一個(gè)變量,使他共享另一個(gè)變量的內(nèi)存空間,使用別名無(wú)疑是一個(gè)好的選擇。變量是什么?是一個(gè)內(nèi)存空間的名字,如果我們給這個(gè)內(nèi)存空間在起另外一個(gè)名字,那就是能夠共享這個(gè)內(nèi)存了,引用(別名)的由此而來(lái)。
指針:指向另一個(gè)內(nèi)存空間的變量,我們可以通過(guò)它來(lái)索引另一個(gè)內(nèi)存空間的內(nèi)容,本身有自己的內(nèi)存空間。
下面我們從現(xiàn)象、內(nèi)存分配、編譯上看他們有什么異同。
1、從現(xiàn)象上看:指針在運(yùn)行時(shí)可以改變其所指向的值,而引用一旦和某個(gè)對(duì)象綁定后就不再改變。
2、從內(nèi)存分配上看:程序?yàn)橹羔樧兞糠峙鋬?nèi)存區(qū)域,而引用不分配內(nèi)存區(qū)域。
3、從編譯上看:程序在編譯時(shí)分別將指針和引用添加到符號(hào)表上,符號(hào)表上記錄的是變量名及變量所對(duì)應(yīng)地址。指針變量在符號(hào)表上對(duì)應(yīng)的地址值為指針變量的地址值,而引用在符號(hào)表上對(duì)應(yīng)的地址值為引用對(duì)象的地址值。符號(hào)表生成后就不會(huì)再改,因此指針可以改變指向的對(duì)象(指針變量中的值可以改),而引用對(duì)象不能改。
那么,小編也為大家整理除了兩者之間的不同:
(1)引用訪問(wèn)一個(gè)變量是直接訪問(wèn),而指針是間接訪問(wèn)。
(2)引用是一個(gè)變量的別名,本身不單獨(dú)分配自己的內(nèi)存空間,而指針有自己的內(nèi)存空間,指針是一個(gè)實(shí)體,而引用不是。
(3)引用在開(kāi)始的時(shí)候就綁定到了一個(gè)內(nèi)存空間(開(kāi)始必須賦初值),所以他只能是這個(gè)內(nèi)存空間的名字,而不能改成其他的,當(dāng)然可以改變這個(gè)內(nèi)存空間的值。
例如
int i = 3,j = 4;
int &x = i; //成為i的別名
x = j; //不能否認(rèn)x仍然引用i,并沒(méi)有成為j的別名,只是修改了x和i共享的內(nèi)存空間的值為4
免費(fèi)領(lǐng)取試聽(tīng)卡
申請(qǐng)已經(jīng)提交
老師會(huì)馬上給您安排試聽(tīng)課程!
申請(qǐng)出錯(cuò)了
您可以加老師QQ:914865590報(bào)名咨詢!