一、在數(shù)據(jù)結(jié)構(gòu)里面,指針型節(jié)點(diǎn)與普通節(jié)點(diǎn)有什么不同
指針型節(jié)點(diǎn)與普通節(jié)點(diǎn)的不同好比你的學(xué)號(hào)(指針型節(jié)點(diǎn))和你自己(數(shù)據(jù)節(jié)點(diǎn))。舉個(gè)例子,即使一場(chǎng)考試你們班同學(xué)并沒(méi)有按照固定的順序坐座位,監(jiān)考老師也能根據(jù)你們的學(xué)號(hào)為你們排座位。
直接定義一個(gè)Node 這個(gè)節(jié)點(diǎn)存在棧里面,Node* a=new Node()是存在堆里
而且指針操作很方便,因?yàn)榻Y(jié)構(gòu)體不支持下標(biāo)訪問(wèn),指針遍歷是很方便的。結(jié)構(gòu)體數(shù)組用著很麻煩。
指針概念:
(1)p是指針/地址 變量(是個(gè)存著地址的變量),其值是(p中存放)一個(gè)變量的地址。
p收到了(放入了)哪個(gè)變量的地址,就指向哪個(gè)變量。該變量成為p的對(duì)象。
(2)*p是p所指向的對(duì)象的值。→*p是一個(gè)值,為指向變量的值
延伸閱讀:
二、地址與內(nèi)存的關(guān)系
形象一點(diǎn),我們可以把計(jì)算機(jī)中的內(nèi)存看作銀行里用于存儲(chǔ)業(yè)主金條的保險(xiǎn)箱。每個(gè)保險(xiǎn)箱有一定的容量,可以存儲(chǔ)你能想象到的各種奇珍異寶,為了不使拿鑰匙的管理員混淆甲老板存寶石的箱子和乙老板存大金條的箱子,每一個(gè)箱子都有一個(gè)固定的編碼。計(jì)算機(jī)的內(nèi)存由數(shù)以萬(wàn)計(jì)的位(bit)組成,每個(gè)位可以容納0或1。由于一個(gè)位所能表示值的范圍太有限,所以我們通常規(guī)定8個(gè)位為一個(gè)字節(jié)(byte),一個(gè)字節(jié)的容量就是我們虛擬銀行保險(xiǎn)箱的**單位大小。為了裝下一整幅字畫(huà),我們把兩個(gè)或者更多個(gè)單位和在一起作為一個(gè)更大的保險(xiǎn)箱,機(jī)器以字為單位存儲(chǔ)整數(shù),每個(gè)字一般由兩個(gè)或四個(gè)字節(jié)組成。
1.內(nèi)存中的每個(gè)位置都有一個(gè)獨(dú)一無(wú)二的地址標(biāo)識(shí)。
2.內(nèi)存中的每個(gè)位置都包含一個(gè)值。
注意事項(xiàng):
一個(gè)字包含4個(gè)(或2)字節(jié),但它仍然只有一個(gè)地址,至于左對(duì)齊還是右對(duì)齊和編譯器的規(guī)定有關(guān),不少數(shù)。邊界對(duì)齊(boundary alignment),此為硬件事項(xiàng),很少能影響c語(yǔ)言程序員,所以重點(diǎn)在 1和2兩條。