0

我目前正在用 C 语言做作业,这是我第一次真正必须理解指针。我大部分时间都在掌握它,但它让我陷入了困境(至少在我看来),而且我在一种情况下遇到了麻烦。

我有一个指向 struct 的指针structPtr,其中包含指向headPtr链表头节点的指针((*headPtr).nextNode 等)。

现在我通过一个函数将节点添加到这个列表中,但是我的问题是当我第一次设置头节点时,我只能设法用(*structPtr).headPtr = &newNode. 但这是在函数内,测试似乎告诉我函数完成后,&newNode 被转储。我想做(*(*structPtr).headPtr) = newNode,但这会导致分段错误,即使我设置了(*structPtr).headPtr = NULL.

有什么指导吗?

4

1 回答 1

3

如果指针在函数外部使用,则不能使用指向局部变量的指针。所有局部变量都在堆栈上,当函数返回时,堆栈的那一部分会被回收,并将被重用于下一个函数调用。

您需要动态分配函数内部的结构,例如malloc

structPtr->headPtr = malloc(sizeof(*structPtr->headPtr));

完成后不要忘记记忆free

于 2013-05-20T11:27:21.370 回答