【问题标题】:C point to next element (list) [duplicate]C指向下一个元素(列表)[重复]
【发布时间】: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


【解决方案1】:

是的,这很好(尽管参数名称head 有点误导)。如您所述,在函数内部以这种方式迭代不会影响函数调用外部的head 指针。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-11
    • 2021-11-27
    • 2021-01-25
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    相关资源
    最近更新 更多