0
Моя структура структурыC точки к следующему элементу (список)
struct Unit {
int number;
struct Unit *next;
};
int main(void) {
struct Unit *head = build(5); /* Suppose that I have list of 5 units pointing to next one. Function build return the list */
fn(head);
printf("%d", head->number);
}
Можно ли перейти к следующему элементу внутри функции, как это?
void fn(struct Unit *head) {
head = head->next;
}
Снаружи у меня все еще есть указатель на первый элемент после вызова функции.
'head' передается по значению, поэтому вы не увидите никаких изменений, внесенных вами в функцию вне его. –
Изменить на 'void fn (struct Unit ** head) { * head = (* head) -> next; } 'и Call' fn (&head); 'Но, возможно, это означает, что утечка памяти. – BLUEPIXY
Помните, что указатели могут быть переданы по значению (head poineter inside fn - это просто копия указателя на голову за его пределами) – user3655463