Я практикую код связанного списка. Ниже приводится функция вставки для этого:Исходное значение не изменяется при передаче по ссылке?
Node* insert_at_pos(Node *head, int pos){
struct Node *ptr=NULL;
printf("enter data\n");
ptr=(Node*) malloc(sizeof(Node));
scanf("%d",&ptr->data);
ptr->next=NULL;
if (pos==0){
if (head==NULL){
head=ptr;
return head; //return that I want to remove
}
}
printf("done\n");
}
Вместо возвращения Node*
, если я вернусь void
, я думаю, что этот код должен еще работать, потому что я передавая значение по ссылке. Поэтому значение head
должно обновляться автоматически, а не возвращать его, но оно не работает, если я удалю Node*
и положил void
в обратном типе insert_at_pos
.
И я звоню insert_at_pos
функции, как это ::
Node *head=insert_at_pos(head,0);
Что может быть возможным объяснением или что происходит здесь не так?
Возможный дубликат [Как изменить указатель, который был передан в функцию в C?] (Http://stackoverflow.com/questions/766893/how-do-i-modify-a-pointer -that-has-was-got-into-a-function-in-c) –
Да, это определенно дубликат [Как изменить указатель, который был передан в функцию в C] (http: // stackoverflow .com/questions/766893/how-do-i-modify-a-pointer-that-was-got-got-in-a-function-in-c) –