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

您好,请问以下的visit前为什么不加*?

您好,请问以下的visit前为什么不加*?

慕村225694 2022-01-20 21:15:33
Status PostOrderTraverse (BiTree T, Status( *visit)(TElemType e)){ if (T){ if ( PostOrderTraverse(T->lchild, visit)) if (PostOrderTraverse(T->rchild, visit)) visit(T->data); return OK; else return ERROR;}else return OK;}那么函数体里的visit只是一个指针,并不是调用的函数,这是为什么在C语言里好像看到都要加*号
查看完整描述

2 回答

?
www说

TA贡献1775条经验 获得超8个赞

随便你,加和不加都一样的。但好像不加的人多些。可能这样输入代码可以简便些。呵呵,我就不爱特意去加个*。
另外,如果函数要用*的话,一定是这种形式:(*visit)(T->data).
*visit(T->data)这种形式是错误的,这样的代码变成了,先调用visit函数,传递参数T->data,然后返回值被当成了个指针处理,用*来解引用这个指针。加括号的理由是*的优先级比()的优先级低,这个你肯定也知道的!

查看完整回答
反对 回复 2022-01-23
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

因为visit本身就已经是指针了。

查看完整回答
反对 回复 2022-01-23
  • 2 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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