为了账号安全,请及时绑定邮箱和手机立即绑定

请看下面的代码,是关于push(S,*p)函数的

请看下面的代码,是关于push(S,*p)函数的

潇湘沐 2022-02-10 11:07:56
int Push(SqStack &S, BiTNode e){if (S.top -S.base >=S.stacksize ){S.base =(BiTNode*)realloc(S.base ,(S.stacksize +10)*sizeof(BiTNode ));if (!S.base )exit(2);S.top =S.base +10;S.stacksize +=10;}*S.top++=e;return 0;}当Push(S,*p)当指针P为空的时候 为什么会发生错误 怎么取解决 谢谢 BiTNode 为一个二叉树的结构体 SqStack 为栈
查看完整描述

2 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

if(!p)//如果这里不加判断,*p操作会出错
{
Push(S,*p)
}

查看完整回答
反对 回复 2022-02-14
?
狐的传说

TA贡献1804条经验 获得超3个赞

&是取结构体S的地址,因为c语言的函数传的是形参的值拷贝,所以如果不加&,那么你在函数里面对S的操作其实是对一个临时结构体的操作。
例子
struct A{
int i;
};
struct A x;
x.i=0;
void fun1(A y)
{
y.i=1
}
void fun2(A& py)
{
(*py).i=2;
}
//调用
fun1(x);没用x.i还是0
fun2(&x);有用x.i是10



查看完整回答
反对 回复 2022-02-14
  • 2 回答
  • 0 关注
  • 452 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号