如何将箭头指针传递给函数?

时间:2014-09-13 19:43:27

标签: c

struct node {
    int x;
    struct node *next;
};

void allocateMemory(struct node *some_node) {
    some_node = malloc(sizeof(struct node));
}

在另一个功能中:

struct node add(struct node *root, struct node *thisNode, int value)

我试着称之为:

allocateMemory(thisNode->next);

我收到运行时错误。它什么都不做。 然而,当我在上述函数中执行与allocateMemory()相同的操作时,即:

thisNode->next = malloc(sizeof(struct node));

它做它应该做的事情。 我做错了什么?

2 个答案:

答案 0 :(得分:2)

这段代码:

void allocateMemory(struct node *some_node) {
some_node = malloc(sizeof(struct node));
}

你可以写:

void allocateMemory(struct node **some_node) {
*some_node = malloc(sizeof(struct node));
}

在打电话的时候:

allocateMemory(&thisNode->next);

答案 1 :(得分:1)

你需要paas 指向指针的指针

当你有指针时,你可以更改指针指向的值,当你想要更改实际指针时,你需要更深一点。

此外,函数add不应返回值,而是指针?

struct node {
  int x;
  struct node *next;
};

void allocateMemory(struct node **some_node) {
  *some_node = (struct node*)malloc(sizeof(struct node));
}

struct node* add(struct node *root, struct node *thisNode, int value) {
  allocateMemory(&thisNode->next);
  thisNode->x = value;

  root->next = thisNode;

  return thisNode;
}