【发布时间】:2018-12-30 02:24:08
【问题描述】:
所以我对 C 和指针还很陌生,我有一个项目供学校完成添加到链表的功能
这就是它的样子:
TEMPLOYEE * newEmployee(const char * name, TEMPLOYEE * next)
{
TEMPLOYEE* head = NULL;
head = malloc(sizeof(TEMPLOYEE));
if(head==NULL)
{
return 1;
}
head -> m_Name = name;
head -> m_Next = next;
head -> m_Bak = NULL;
}
这在输入名称作为字符串时有效,例如a = newEmployee ( "Peter", a );
但是当我尝试使用临时值添加 m_Name 时,就像这样
strncpy ( tmp, "Victoria", sizeof ( tmp ) );
a = newEmployee ( tmp, a );
strncpy ( tmp, "Peter", sizeof ( tmp ) );
a = newEmployee ( tmp, a );
列表将随着值的变化而变化,因此它将有两名名为 Peter 而不是 Peter 和 Victoria 的员工,我找不到如何执行此操作。欢迎任何帮助。
【问题讨论】:
-
您在创建列表节点时使用相同的指针 (tmp),因此它们都指向相同的位置。你用“Peter”覆盖“Victoria”,所以两个节点都指向“Peter”
-
您需要像为列表一样为每个名称分配单独的空间。
-
另外,你的第一个例程不见了
return head
标签: c pointers linked-list char