[問題] 有關指標傳遞問題

看板C_and_CPP作者 (Veck)時間11年前 (2013/01/11 11:11), 編輯推噓3(308)
留言11則, 4人參與, 最新討論串1/1
我的平台是Windows GCC 以下是我碰到的問題:(太久沒碰指標有點忘了) 假設head是一個已經建立好的linked list struct node{ int data; }; void main() { struct node *pointer=NULL; function(head, pointer); } void function(struct node*pointer) { pointer = head; } 確定在function中有成功將head的記憶體位址指定給ptr 但為什麼這樣子會傳不回去main??? 好像說我在function中傳入的pointer記憶體位址變成是call by value(copy) 導致離開function就不見了??? 但是pointer不是傳址呼叫嗎??? 怎麼會這樣呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.170.227.7

01/11 11:23, , 1F
只有call by value跟call by reference喔
01/11 11:23, 1F

01/11 11:24, , 2F
pointer的value是位址, 所以你對位址dereference OK
01/11 11:24, 2F

01/11 11:25, , 3F
要動pointer本身 請用Node** n(多包一層) or *& (ref)
01/11 11:25, 3F

01/11 11:26, , 4F
喔喔!所以是要 function(struct (node**) pointer)嗎???
01/11 11:26, 4F

01/11 11:28, , 5F
欲修改變數之值,應傳其位址,指標變數亦然,故需**
01/11 11:28, 5F

01/11 11:31, , 6F
ㄟ...對不起兩位大大可以稍微跟我說明是改哪嗎???
01/11 11:31, 6F

01/11 11:43, , 7F
謝謝兩位B大,我懂了!!!
01/11 11:43, 7F

01/11 11:58, , 8F
想追捕問一個問題,為什麼我在main中沒有malloc給poiter
01/11 11:58, 8F

01/11 11:58, , 9F
就沒有辦法這樣用了呢?pointer只是一個存位址的不是嗎?
01/11 11:58, 9F

01/11 14:37, , 10F
置底十三誡...
01/11 14:37, 10F

01/11 14:38, , 11F
建議你用return的給main中的pointer接 比較簡單
01/11 14:38, 11F
文章代碼(AID): #1GxuB81P (C_and_CPP)