ramshadom 2016-05-26 08:36 采纳率: 71.4%
浏览 1210
已采纳

关于C++函数参数调用的问题

最近几天都在学习数据结构呀~学习的过程中发现一个小小的问题,虽然放置不管也没有什么关系……但是如果以后因为这些问题酿了大祸就不好了!所以借着这种未雨绸缪(伪)的精神,决定把问题po出来。

此前在下是查过书,查过百度谷歌的,但是找不到很满意的解答(大概是因为这个问题太具体了……),所以把琐碎问题在此提出来。能够回答这细枝末节的高手们,在下十分感激!



问题如下:

图片说明

如上图所示,我构建了一个结构体叫BiTNode,用来构建二叉树的节点的。接下来我也是在main函数里面使用了它说明了一个叫BiTree的变量,如下图所示
图片说明

之后我也在一个函数里调用了这个BiTree变量,就是下图这样
图片说明



之后我就开始学习图了,同样的,我构建了一个结构体,并且说明了一个变量叫G,还在一个函数里面调用了这个变量,po图!

图片说明

图片说明

图片说明



那么我的问题来了:为什么用同样方法构建结构体,同样方法说明变量,但是为什么在调用变量的时候,二叉树的就不用加指针说明符(就是那个星号),而图就需要呢?

图片说明
图片说明
以上,十分感谢。

---------------------------------问题补充--------------------------------------------
忘记说一些东西,导致回答我的大神的理解出现了偏差,很抱歉,现在补上。

图片说明
如果把图的函数的指针符号删去,编译器会出现这样的报错,我的疑问就是,为什么我调用变量G就一定得加指针符号呢?

  • 写回答

2条回答 默认 最新

  • 小灸舞 2016-05-26 09:41
    关注

    感觉楼主这个问题就是“值传递和指针传递的区别”
    1. 值传递:形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。
    2.指针传递一般适用于:函数内部修改参数并且希望改动影响调用者。对比值传递,指针传递可以将改变由形参“传给”实参(实际上就是直接在实参的内存上修改,不像值传递将实参的值拷贝到另外的内存地址中才修改)。
    指针传递的另外一种用法是:当一个函数实际需要返回多个值,而只能显式返回一个值时,可以将另外需要返回的变量以指针传递给函数,这样在函数内部修改并且返回后,调用者可以拿到被修改过后的变量,也相当于一个隐式的返回值传递吧。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?