求助,求助。一个简单的问题

milee 2002-06-18 10:45:52
各位大哥:
我在学栈的时候碰到一个小麻烦。
设栈的结点类型为:
typedef struct node{
NODE date;
struct node *link;
}LNODE;
进栈函数为:
void push(NODE x,LNODE **toppt)
这里为什么要写成LNODE**toppt 写成LNODE*toppt不也一样吗?
对程序应该没有影响的。
...全文
41 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
whyNotHere 2002-06-18
  • 打赏
  • 举报
回复
这类问题在把指针进行参数传递时容易遇到,但又难以发现的问题。

随着对指针认识的加深会很好的克服这类问题。

whyNotHere 2002-06-18
  • 打赏
  • 举报
回复

这是一个非常好的问题,大家关注一下。

举个例子
main()
{
NODE x;
LNODE *pt=NULL;
push(x,pt);/*假设x已付值*/
}

如果是void push(NODE x,LNODE *toppt);
toppt初始为NULL,加入一个节点后toppt不为空,可pt依然=NULL;
返回主函数后,进栈操作不成功,如果为LNODE **toppt就不会了。

fangrk 2002-06-18
  • 打赏
  • 举报
回复
写成LNODE*toppt只能修改*toppt,而不能修改toppt
Hpt370 2002-06-18
  • 打赏
  • 举报
回复
如果用面向对象的风格设计就没有这个麻烦了

stack myStack;
myStack.push(a);

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧