[問題] 將全域變數傳入函數
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
這段code只有make_tree,traverse_tree,load這三個函數有修改過,如果有錯一定
是在這三個裡面
這段code只有在make_tree函數的部分有問題,就是我想將head這個全域變數
傳入function,但是好像都會變成將位置以值的形式複製給區域變數,
結果函數處理到的都是區域變數,不果我還是不懂為何將&head傳入,會沒辦法
根據位置找到全域變數,並對全域變數做處理???
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
http://ideone.com/5q10f
補充說明(Supplement):
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.251.183.32
推
03/30 15:30, , 1F
03/30 15:30, 1F
→
03/30 15:30, , 2F
03/30 15:30, 2F
→
03/30 15:31, , 3F
03/30 15:31, 3F
→
03/30 15:31, , 4F
03/30 15:31, 4F
我發現把111行的code改成*t_head=t_data就會對了,不過我還是不懂,
把*t_head=t_data寫成t_head=&t_data為什麼會不對,*和&不是會互消嗎??
※ 編輯: lueichun 來自: 111.251.183.32 (03/30 18:50)
→
03/30 19:11, , 5F
03/30 19:11, 5F
→
03/30 19:12, , 6F
03/30 19:12, 6F
可以畫個圖解釋一下嗎??我一直以為是將t_data的位置指定給head,
就可以讓head指向data,我畫的圖會是這樣:
t_head---->null,
data的位置指定給head:
t_head---->t_data(指標)---->t_data對應的空間
因為我是將t_head當作tree root的address,而t_data是tree root,而且他是個指標,
所以將t_data的address設給t_head,寫成*t_head=t_data感覺像是直接把tree_root
assign成t_data,我知道這樣寫可以,但是覺得這樣寫很不自然,感覺不像是在處理
指標,而我就算畫圖還是不知道為何不能用前者的作法??
※ 編輯: lueichun 來自: 111.251.183.32 (03/31 13:24)
→
03/31 15:50, , 7F
03/31 15:50, 7F
→
03/31 15:54, , 8F
03/31 15:54, 8F
→
03/31 15:58, , 9F
03/31 15:58, 9F
→
03/31 16:00, , 10F
03/31 16:00, 10F