推 TWkobe: 假設a的地址是0x100,值為10 , pointerA的地址為0x200, 值 06/27 11:08
→ TWkobe: 為0x100 06/27 11:09
→ TWkobe: 你把&A餵進去就是把0x200丟進去 06/27 11:10
→ ptt0720: 那用什麼東西接有差嗎 用**A *A A 06/27 11:26
推 TWkobe: 你可以想像**A要跑兩次所以丟0x200進去後, 他會先依照0x20 06/27 11:27
→ TWkobe: 0找出值0x100, 再依0x100尋找得到值10, 所以丟&A後**A為10 06/27 11:28
→ TWkobe: 而丟&A使用*A就只有跑一次, 所以印出0x100 06/27 11:29
→ ptt0720: 感謝 06/27 11:31
→ freeunixer: 你是看什麼書寫的範例?這個 code 形參、實參用得不好 06/27 11:35
推 TWkobe: 若你只是print出A , 是顯示你餵進來的pointer所儲存的內容 06/27 11:35
→ TWkobe: 所以依照你的範例結果為0x200 06/27 11:35
→ freeunixer: 你最好不要將 main 跟 fun 的變數寫一樣,才好看出差別 06/27 11:36
→ freeunixer: 你的問題是沒搞清楚為什麼 main 傳 &A 進 fun(), 06/27 11:37
→ freeunixer: 但 fun 卻是收 (**A)...事實上,兩個 A 是不同的. 06/27 11:37
→ freeunixer: 將 fun 的 A 全改成 B,會比較好區分,也比較容易搞清楚 06/27 11:39
→ alex70266: 其實記住C只有call by value就是了 06/29 23:44
→ alex70266: 阿阿怎麼會推文到這來XDDDDD 搞笑orz 06/29 23:48
→ zakk0610: 當你的func要改pointer的值(*p的p)時會傳**p,傳*p無法改 08/02 07:29
→ zakk0610: p的值 08/02 07:29
→ zakk0610: 精確來講可以改值但只改到local variable 08/02 07:30