我想创建一个没有全局变量的单链表。我用初始化第一个元素,NULL
然后想将第一个元素复制node
到list_
. 它被复制到函数中,但副作用不起作用。在我的主要功能中,价值仍然是NULL
. 如果我在函数中返回结构add_element()
一切正常但是,是否有可能l
在不更改函数结构和结构本身的情况下获取节点的值?
#include <stdio.h>
#include <stdlib.h>
struct list {
int value;
struct list *next;
};
struct list *initialize(void)
{
struct list * l = NULL;
return l;
}
int add_element(struct list *list_, void *v)
{
struct list *node = malloc(sizeof(struct list));
node->value = *((int*)v);
node->next = NULL;
if(list_ == NULL)
{
list_ = node;
printf("list_->value = %d\n", list_->value); // correct copy
return 0;
}
//TODO if not first then add at end..
return 0;
}
int main()
{
struct list *l = initialize(); // l = NULL
int i = 10;
add_element(l,&i);
if(l == NULL) printf("l == NULL!\n");
printf("l->value = %d\n", l->value); // does not work, l is NULL
return 0;
}