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