最近在學(xué)的數(shù)據(jù)結(jié)構(gòu),總是對(duì)于&與的理解不夠
Answer1:
結(jié)構(gòu)體類(lèi)型為SqList …… void InitList(SqList *&q){……}/&的作用 {SqList *q; …… InitList(q); }
&的意思是對(duì)線(xiàn)性表(你是在學(xué)數(shù)據(jù)結(jié)構(gòu)吧……)直接進(jìn)行操作,否則的話(huà)是相當(dāng)于把原來(lái)的表復(fù)制一份,再對(duì)復(fù)制品操作。初始化的話(huà)肯定要對(duì)原表操作啦,要加&的。
Answer2:
L是SqList類(lèi)型,然后*是指L是個(gè)針肯定沒(méi)錯(cuò)了,是這個(gè)&是引用或者叫做別名。
你大概是不知道這個(gè)&吧?
函數(shù)調(diào)用的時(shí)候是 值傳遞,所以你在函數(shù)中修改了這個(gè)指針的時(shí)候,不能把結(jié)果帶回,相當(dāng)于一個(gè)局部的操作,只在那個(gè)函數(shù)中有意義。也就是說(shuō),當(dāng)函數(shù)返回以后,原先的指針還是指向原先的那片內(nèi)存空間。因而不能通過(guò)傳遞指針修改指針的指向。
這里的這個(gè)引用,是指這個(gè)SqList類(lèi)型的指針L的引用。也就是說(shuō)在函數(shù)中可以修改 真正的 指針L指向的內(nèi)存空間。這才是真正的修改了L。
這里引入了一個(gè)新的概念,引用和指針的區(qū)別
1.C語(yǔ)言中并不存在引用
2.&在C語(yǔ)言中表示取地址符號(hào),在C++中表示的是引用
例子如下:
類(lèi)型標(biāo)識(shí)符 &引用名=目標(biāo)變量名
引用必須初始化,并且只能且需要指定一個(gè)數(shù)據(jù)對(duì)象
使用別名操作就必定操作的是其自身,所以初始化銷(xiāo)毀等操作務(wù)必牢記需要這樣。
而用個(gè)指針,會(huì)復(fù)制該表,操作復(fù)制后的另一個(gè)表,原表不變