我被赋予了考试这个代码,并在需要局部变量来解释它做什么: (我改变了一些名字,因为源不是英语)指针和
#include <stdlib.h>
typedef int typeInfoSCL;
struct elemSCL
{
typeInfoSCL info;
struct elemSCL* next;
};
typedef struct elemSCL TypeElemSCL;
typedef TypeElemSCL* TypeSCL;
void list_add(TypeSCL *scl, typeInfoSCL e)
{
TypeSCL tmp = *scl;
*scl = malloc(sizeof(struct elemSCL));
(*scl)->info = e;
(*scl)->next = tmp;
}
int main()
{
TypeSCL scl1 = NULL;
list_add(&scl1, 3);
list_add(&scl1, 5);
TypeSCL tmp = malloc(sizeof(struct elemSCL));
tmp->next = scl1;
list_add(&tmp, 7);
}
我想,既然tmp
在list_add
一个局部变量,这样的说法:
(*scl)->next = tmp;
是不正确的,因为该方法被调用后,scl->next
不再存在。
测试证明我错了。为什么?
此代码不能编译,请张贴编译代码。你可能没有正确地改变所有的名字。 –
由于这是某种形式的伪代码,而不是真正的C,它是不可能回答的问题。特别是,该函数的缺失返回类型使得任何尝试回答都有所不同。 – Lundin
我想你错过了一些'*'这里:'结构elemSCL未来;指针的' – Gerhardh