我目前正在用 C 语言进行赋值,这是我第一次真正了解指针。我基本上掌握了它的窍门,但它让我陷入了困境(至少在我看来),而且我在一种情况下遇到了麻烦。
我有一个指向结构 structPtr
的指针,它包含一个指向链表头节点((*headPtr).nextNode 等)的指针 headPtr
。
现在我通过一个函数向这个列表添加节点,但是我的问题是当我第一次设置头节点时,我只能设法用 (*structPtr).headPtr = &newNode
。但这是在函数内,测试似乎告诉我函数完成后, &newNode 被转储。我想执行 (*(*structPtr).headPtr) = newNode
,但这会导致段错误,即使我设置了 (*structPtr).headPtr = NULL
.
有什么指导吗?
最佳答案
如果在函数外部使用指针,则不能使用指向局部变量的指针。所有局部变量都在堆栈上,当函数返回时,堆栈的那部分会被回收,并将在下一个函数调用中重用。
您需要在函数内部动态分配结构,例如使用malloc
:
structPtr->headPtr = malloc(sizeof(*structPtr->headPtr));
别忘了 free
完成后的内存。
关于c - 如何在 C 函数中设置未初始化指针的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16648429/