我在C中创建一个链接列表(结构),但我想能够调用一个函数并让它自己添加4-5个stuct到列表中.问题是因为在C中,所有在函数中创建的变量都留在了堆栈/堆上,我不知道我应该如何实现这一点.
这是一个代码示例:
struct listItem
{
int value;
listItem *left;
listItem *right;
}
void addItems(listItem *l)
{
listItem one, two, three;
l->left = &one;
one.left = &two;
two.left = &three;
}
int main (char *a [])
{
listItem l;
addItems(l);
}
Run Code Online (Sandbox Code Playgroud)
显然这不起作用.我怎么能做到这一点?它甚至可能吗?谢谢
编辑:哇谢谢大家的帮助.这比我想象的更快,更有帮助!
您必须使用malloc()分配"one","two","three",而不是在堆栈上创建它们.完成它们之后,你将不得不再次浏览列表并在内存上调用free(),这样你的程序就不会泄漏.
试试这个addItem而不是......
void addItem(listItem *l, int value)
{
listItem* item = malloc (sizeof (listItem));
item->value = value;
item->next = 0;
item->prev = l; // Probably not what you want, but you were only singly linking in the example
l->next = item;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
487 次 |
| 最近记录: |