推 shadow0326:我沒有很完整看完code 不過111行是將區域變數t_data的 03/30 15:30
→ shadow0326:位址賦予給t_head, 這是你要的效果嗎? 03/30 15:30
→ shadow0326:t_data是一個指標,但這個指標自己的位址仍只是在local 03/30 15:31
→ shadow0326:scope有效噢 03/30 15:31
我發現把111行的code改成*t_head=t_data就會對了,不過我還是不懂,
把*t_head=t_data寫成t_head=&t_data為什麼會不對,*和&不是會互消嗎??
※ 編輯: lueichun 來自: 111.251.183.32 (03/30 18:50)
→ shadow0326:提示是一個指標自己本身也有位址, 以及它的生命週期 03/30 19:11
→ shadow0326:其實畫個圖應該就了解了 可是我懶的畫而且要下班了(酸 03/30 19:12
可以畫個圖解釋一下嗎??我一直以為是將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)
→ jhchou:因為雖然t_head的值是head的位址,但是t_head是local var 03/31 15:50
→ jhchou:你寫t_head=&t_data只是改變t_head的值,沒有改變head的值 03/31 15:54
→ jhchou:你可以先想想假如有個函式長這樣void f(int* x){ x=nul;} 03/31 15:58
→ jhchou:然後main(){ int a; f(&a); } a會不會有變化 03/31 16:00