【发布时间】:2017-04-13 20:47:18
【问题描述】:
我的结构体
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; }并调用fn(&head);但也许这意味着内存泄漏。 -
请记住,指针也可以按值传递(fn 内的头指针只是它外面的 Yours 头指针的副本)
-
@BLUEPIXY:我一开始也是这么想的,但问题似乎与此无关,答案是“确定……你为什么不相信?”
标签: c