2015-06-04 167 views
1

在C,我想一個指針傳遞給另一個函數,所以我編碼以下,在C中傳遞點作爲參考?

node* list // contains linked list of nodes 

void function (node* list){ 

/*Whatever I do here, I want to make sure that I modify the original list, 
    not the local copy. + 

    how do I pass the original pointer 'list' to this function so that I'm working 
    on the same variable? */ 

} 

[編輯]

我只是想在這裏澄清一些事情,

其實我有一個void函數,它接受一個結構參數,

void function (struct value arg){ } 

,並在結構,我定義我的內部變量之一爲,

node* list-> list; 

所以在我的功能,如果我這樣做,

arg->list 

我在訪問原始列表變量?

+0

可能的重複[理解指針有什麼障礙和可以做些什麼來克服它們?](http://stackoverflow.com/questions/5727/what-are-the-barriers-to-understanding-pointers可以做什麼來克服) – Leushenko

+0

你打算刪除那個函數中的元素嗎? – Pierre

+0

你的函數是否需要一個指針或結構?你已經展示了兩者。 –

回答

1

爲了回答您的編輯:

不,你是按值傳遞的結構,因此函數包含結構的副本。如果你沒有在函數中使用return這個結構,並且從你調用函數的地方抓住它,它將會丟失。

請記住,C不能通過引用傳遞。它是通過傳遞指針來模擬的。你可以這樣做:

void function (struct value* arg) 
{ 
.... 
} 

它會修改原始結構。