C语言的一个指针问题
最经在学数据结构的栈,发现在指针方面有点问题,
比如说在链栈的出栈方式
我的链栈的定义是:
/*链栈的定义需要用到两个结构体*/
typedef struct StackNode{ //节点类型
int data;
StackNode* next;
}StrackNode;
typedef struct StackNode *LinkStackPtr;
typedef struct { //栈
LinkStackPtr top; //栈顶指针
int count;
}LinkStact;
然后我的入栈函数写成
/*入栈*/
void PushStack(LinkStact s,int e){
//LinkStackPtr p;
//p=s->top;
LinkStackPtr a =(StackNode*)malloc(sizeof(StackNode)); //新的节点
a->data = e;
a->next = s.top; //下面这两步和链表的插入相同
s.top =a;
s.count++;
}
发现这样写会进栈失败 --
只要把里面的参数改成LinkStact *s,指针形式就可以了??为什么会这样?希望有大佬可以帮忙解释一下,感激不尽