我在C中实现了一个链表程序,create_node函数给出了一个警告:function返回局部变量的地址。我已经阅读了有关使用malloc的内容,但我想了解没有它的原始问题和解决方案。感谢。
struct list_node_s* Create_node(int val, struct list_node_s* node_p) {
struct list_node_s temp;
temp.data = val;
temp.next_p = node_p;
return &temp;
} /* Create_node */
答案 0 :(得分:0)
问题是您的temp
变量是本地变量。它具有功能范围,因此只要您的程序在函数中,它就存在。这通常使用堆栈实现。
您应该使用malloc
从堆获取内存,这是所有动态分配的来源。这样,列表及其节点将一直存在,直到您使用free
明确销毁它们。
我不推荐的唯一其他解决方案是使用递归函数调用构建列表。只要您使用列表永不返回。
我看到这样做了一次。这很可怕。但可能。