最近在學(xué)的數(shù)據(jù)結(jié)構(gòu),總是對于&與的理解不夠
Answer1:
結(jié)構(gòu)體類型為SqList …… void InitList(SqList *&q){……}/&的作用 {SqList *q; …… InitList(q); }
&的意思是對線性表(你是在學(xué)數(shù)據(jù)結(jié)構(gòu)吧……)直接進行操作炉菲,否則的話是相當(dāng)于把原來的表復(fù)制一份助隧,再對復(fù)制品操作舶替。初始化的話肯定要對原表操作啦鸡典,要加&的芳悲。
Answer2:
L是SqList類型,然后*是指L是個針肯定沒錯了五鲫,是這個&是引用或者叫做別名溺职。
你大概是不知道這個&吧?
函數(shù)調(diào)用的時候是 值傳遞位喂,所以你在函數(shù)中修改了這個指針的時候浪耘,不能把結(jié)果帶回,相當(dāng)于一個局部的操作塑崖,只在那個函數(shù)中有意義七冲。也就是說,當(dāng)函數(shù)返回以后规婆,原先的指針還是指向原先的那片內(nèi)存空間澜躺。因而不能通過傳遞指針修改指針的指向。
這里的這個引用抒蚜,是指這個SqList類型的指針L的引用掘鄙。也就是說在函數(shù)中可以修改 真正的 指針L指向的內(nèi)存空間。這才是真正的修改了L嗡髓。
這里引入了一個新的概念操漠,引用和指針的區(qū)別
1.C語言中并不存在引用
2.&在C語言中表示取地址符號,在C++中表示的是引用
例子如下:
類型標(biāo)識符 &引用名=目標(biāo)變量名
引用必須初始化饿这,并且只能且需要指定一個數(shù)據(jù)對象
使用別名操作就必定操作的是其自身浊伙,所以初始化銷毀等操作務(wù)必牢記需要這樣。
而用個指針长捧,會復(fù)制該表嚣鄙,操作復(fù)制后的另一個表,原表不變