哎,好人做到底吧,google你都懒得用
就拿你以前的初始化函数来说
void InitStack(SNode *s)
{
s=Null;
} /* 初始化栈*/
其实这个函数一点作用都没有,你可以写个代码试一下
两次打印的p都是同一个值,原因就是我之前说的,函数内部不能改变指针的值,只能够修改指针指向的值,大致的原因就是编译器会为函数的每个参数生成一个临时副本,修改的只是临时副本的值,原有的值并没有被改变(想了解更多的话可以去网上搜一下,应该有很多。。很多)如果想获得修改后的,可以通过返回值,也可以通过传入指针的地址来实现,如果二级指针很难理解的话你也可以修改成通过返回值来实现,就像我给你修改过的push函数那样,返回一个指针。
就拿你以前的初始化函数来说
void InitStack(SNode *s)
{
s=Null;
} /* 初始化栈*/
其实这个函数一点作用都没有,你可以写个代码试一下
char * p=(char *)malloc(10); printf("%p\n",p); InitStack(p); printf("%p\n",p);
两次打印的p都是同一个值,原因就是我之前说的,函数内部不能改变指针的值,只能够修改指针指向的值,大致的原因就是编译器会为函数的每个参数生成一个临时副本,修改的只是临时副本的值,原有的值并没有被改变(想了解更多的话可以去网上搜一下,应该有很多。。很多)如果想获得修改后的,可以通过返回值,也可以通过传入指针的地址来实现,如果二级指针很难理解的话你也可以修改成通过返回值来实现,就像我给你修改过的push函数那样,返回一个指针。