我正在尝试使用链接列表来简单动态实现堆栈。 接下来是我的代码。该代码没有错误。但是在函数内部完成的更改没有反映出来,尽管我相信我通过引用传递了结构。 尽管我已经能够通过使用全局结构来完成这项工作,但是我在这里错过了一个非常基本的概念,所以想知道我在理解什么是错误的,以及如何反映在没有主函数的情况下在弹出函数中完成的更改使用全球范围。通过引用传递结构c
struct stack
{
char value;
struct stack *next;
};
void push(char a,struct stack *s1)
{
struct stack *s2;
s2=(struct stack *)malloc(sizeof(struct stack));
if(empty(s1))
{
s2->value=a;
s2->next=NULL;
s1=s2;
}
else
{
s2->value=a;
s2->next=s1;
s1=s2;
}
return;
}
int main()
{
struct stack s1;
push(c,&s1);
printf("%d",s1.value);
}
并将s1声明为main()中的指针。 –
@Richard Pennington对:-) – cnicutar