[問題] 請問這段code

看板C_and_CPP (C/C++)作者 (丁丁)時間16年前 (2010/02/01 14:11), 編輯推噓3(3017)
留言20則, 6人參與, 最新討論串1/1
在維基百科binomial heap(http://en.wikipedia.org/wiki/Binomial_heap) 裡找到這份程式碼: http://www.cs.unc.edu/~bbb/foss/binheaps/iheap.h (原版) 研究好幾個禮拜了還是好多地方不懂... 比方說__iheap_merge這個函數:(http://codepad.org/a9jTt5GE)←從原版節錄下來的 第8行到21行,是pos沿著a與b中degree較小的路徑走,走完之後再傳回一開始的 頭(head)。 1.a跟b兩個list都各自有各自的空間。pos沿著他們兩條走完,那pos "自己"有自己  占的空間嗎(他自己有實體?)還是pos是"虛擬的",只是沿著a和b走完而已。 2.第10行「*pos=a;」為什麼要用一顆星?而不是pos=a;?或pos=&a;?或**pos=a;? 每個指標變數都有三種可能:*ptr跟ptr跟&ptr,請問我在寫程式的時候要怎麼選? 指標基本概念我懂,雙重指標我也懂(指向指標的指標),但是看到這份應用我完全 不知怎麼理解。 3.第16行「pos = &(*pos)->next;」為什麼是這樣寫?等號右邊已經(*pos)->next了, 為什麼不用*pos=(*pos)->next;?或*pos=&(*pos)->next;?或之類的? 再補一個問題: 4.請問如果要實現這函數的功能,一定得用到雙重指標嗎?有可能只用單一指標就達  到相同的功能嗎? 為什麼指標編程這麼難QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.6.13.94

02/01 14:19, , 1F
我怎麼覺得你還沒搞懂指標...?
02/01 14:19, 1F

02/01 14:19, , 2F
指標的指標:代表的意義如字面意思…
02/01 14:19, 2F

02/01 14:20, , 3F
這三個"可能"如果分清楚它們是指什麼的話就不會有這些問題了
02/01 14:20, 3F

02/01 14:23, , 4F
*ptr代表ptr指向的變數的值。ptr代表ptr這個變數的值。
02/01 14:23, 4F

02/01 14:24, , 5F
&ptr代表ptr這個變數自己的位址。
02/01 14:24, 5F

02/01 14:26, , 6F
可是我真的不曉得等號兩邊的變數:pos跟a 要怎麼配?
02/01 14:26, 6F

02/01 14:29, , 7F
「*pos=a;」...我要怎麼知道是這樣寫? ←我的問題好像是這
02/01 14:29, 7F
※ 編輯: bil193 來自: 124.6.13.94 (02/01 14:31)

02/01 14:30, , 8F
去搞懂pos與a的型態, 包含基本型態, 與指標層數....
02/01 14:30, 8F

02/01 14:31, , 9F
你要非常清楚「*」這個東西放在什麼地方是什麼意思~
02/01 14:31, 9F

02/01 15:01, , 10F
ma~~試著把每一個 = statement, = 的左右兩邊型態(包含
02/01 15:01, 10F

02/01 15:01, , 11F
指標層數)都寫出來, 你才搞得清楚哪一個 = assign的是
02/01 15:01, 11F

02/01 15:02, , 12F
node, 哪些是在assign ptr, 又或者是assign ptr to ptr.
02/01 15:02, 12F

02/01 15:03, , 13F
上面是單就啃程式碼的建議; 至於它的演算法, 建議你自己
02/01 15:03, 13F

02/01 15:04, , 14F
拿紙筆畫個圖merge heap node串一串; 有的人習慣從code
02/01 15:04, 14F

02/01 15:04, , 15F
了解algo, 有人習慣從algo了解code, 你自己試試再說吧:)
02/01 15:04, 15F

02/01 15:18, , 16F
謝謝V大的建議我來試試
02/01 15:18, 16F

02/01 16:28, , 17F
中分加油 我覺得你拿本有講指標的書好好念一下 搞懂型態
02/01 16:28, 17F

02/01 16:29, , 18F
我以前也是不懂到底要幾個* 要不要& 後來我把重點放在形
02/01 16:29, 18F

02/01 16:30, , 19F
態就比較有感覺了 這是我的經驗啦 @@"
02/01 16:30, 19F

02/02 18:16, , 20F
嗯 看型態就好..筆記
02/02 18:16, 20F
文章代碼(AID): #1BPd2S6o (C_and_CPP)
文章代碼(AID): #1BPd2S6o (C_and_CPP)