我有這樣是否將「指向結構的指針」傳遞給函數在C中創建它的本地副本?
struct node
{
int data;
struct node* next;
};
我用創造單鏈表的結構。
我創建其他功能,如
int push(struct node* head,int element);
其推動到數據使用節點結構創建的堆棧。
功能,然後嘗試更新struct node* head
通過使用代碼它(它其他的東西也一樣)
head=(struct node*)malloc(sizeof(struct node));
呼叫作出這樣
struct node* stack;
push(stack,number);
它看起來像這樣的代碼創建傳遞給它的指針副本。於是,我只好功能改變
int push(struct node** head,int element)
和
*head=(struct node*)malloc(sizeof(struct node));
呼叫作出這樣
struct node* stack;
push(&stack,number);
所以我的問題是,什麼是早期的功能幹嘛?如果我想更新指針的原始值或者我的方法錯誤,是否有必要將struct node**
傳遞給該函數?
對不起,我不能提供完整的代碼,因爲它是一項任務。
C傳遞值,即使傳遞的值是對其他東西的引用。 –
@JohnColeman:澄清:C不支持引用(這個術語在編程中有明確的含義)。你可能意思是「地址」。 – Olaf
@Olaf指針是C實現引用的方式。你爲什麼認爲'*'被稱爲* dereference *操作符?我不想陷入術語中,但維基百科關於計算機科學參考文獻的文章提到指針是參考類型的一個例子:https://en.wikipedia.org/wiki/Reference_(computer_science)。但是 - 你可能是正確的,來自不同語言的人可能會誤解我的意思。 –