百科知识

指针的引用-C++中关于指针的引用一个函数的原型是:voidinsert(i

2012-10-31 23:03:27J***
一个函数的原型是: void insert(int n,BinaryNode * &t); 其中BinaryNode 是自己定义的struct类型。我想问,对指针的引用是什么意思?因为我觉得,指针传递就已经是地址的复制了,干什么还要引用啊?比如把实参 BinaryNode *x 传递,然后调用函数 insert(2,x),这时在函数中对形参t的任何操作就应该是对实参x的操作,为什么还会有引用?这个引用是干嘛的?(这个引用是必须的,去掉的话程序会出错,我试过了)【指针的引用】C++中关于指针的引用一个函数的原型是:voidinsert(intn,BinaryNode*&t);其中BinaryNode是自己定义的struct类型。我想?

最佳回答

  • 如果没有引用x会以传值的方式传给函数insert. 那样的话,该函数的第二个参数值是x的一个copy,和x本身并没有关系。和所有其他的传值参数一样,在函数体中改变参数值将不会影响x。比如上面这个例子,在insert中t的应该随时改变,如果传值(使用*)的话,其实每次传的都是一样的,所以程序会出错。在C++中,可以用指针的指针和指针的引用来解决;在C中只能用指针的引用来解决这个问题。
    2012-11-02 13:37:51
  • insert函数执行时有可能修改指针类型的第二个参数的值,并且要传递出去,所以要加上&。 如果没有&的话,那么函数调用insert(2,x)刚开始执行时,系统会把x的值传递给t,接下来t就和x没有任何关系了。对t的修改不会对x产生任何影响。 (如果用C语言编的话,那么第二个参数必须是指针的指针。)
    2012-11-01 00:07:17
  • 了解管理咨询行业的规范操作流程,提高调查研究、文献检索和数据挖掘的能力,提高理论与实际相结合的能力,提高协同合作及组织工作的能力,培养独立分析问题和解决实际问题的能力。 四、实习内容
    2012-10-31 23:08:49
  • 很赞哦! (230)