我正在嘗試使用鏈接列表來簡單動態實現堆棧。 接下來是我的代碼。該代碼沒有錯誤。但是在函數內部完成的更改沒有反映出來,儘管我相信我通過引用傳遞了結構。 儘管我已經能夠通過使用全局結構來完成這項工作,但是我在這裏錯過了一個非常基本的概念,所以想知道我在理解什麼是錯誤的,以及如何反映在沒有主函數的情況下在彈出函數中完成的更改使用全球範圍。通過引用傳遞結構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