c - 如何在 C 函数中设置未初始化指针的值?

标签 c function pointers struct

我目前正在用 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/

相关文章:

C++获取临时地址 - 将引用分配给指针时出错

c - if 语句中只有变量名意味着什么

c - 在c中对(struct)数组进行混洗

c - 如何在宏中使用 __func__

javascript - 从涉及 Promise 的函数返回非 Promise 值

c++ - 指针和引用

c++ - cc1.exe 系统错误 - 缺少 libwinpthread-1.dll - 但它不是

c - 由于 fgets 导致段错误(核心转储) - 我认为

c - 如何在c中返回指向数组的指针

c++ - 通过指针访问三维数组