void addBSTreeNode(BSTreeNode *&pCurrent,int value)
这个函数参数是 BSTreeNode *&pCurrent 而不是BSTreeNode *pCurrent?
用BSTreeNode *pCurrent 会错误
C++与Java中参数传递方式及相关问题
在C++中市面上的说法是有三种传递方法:
1、值传递
2、指针传递
3、引用传递
当然说白了,指针传递本质上是值传递,传递的是地址值。而这个指针的地址值作为参数传入,是无法改变的。但是在二叉树等方法中 需要改变指针内容时可以定义addBSTree(BSTree* &a) 利用指针传递方可改变指针内容。
在Java中实际只有一种传递方式: 值传递
基本类型就是普通的值传递。对象类型是类似于引用传递一样,但本质上还是值传递,传递的是对象的地址。所以在函数中修改对象本身无法修改原对象,即把新对象赋给形参,原对象不变。但是可以修改对象内部的成员变量的值。但是在某种情形下似乎仍然无法修改,即Integer 等封装类型。这是因为Integer String等都是final修饰的不可变对象。Integer a = new Integer(0);a =2;a=2时 是java的自动装箱机制即真实执行的是 a = new Integer(2) 即Integer类型的引用a指向了新的2,而原来的0没变。故会产生 对象作形参,传递的是引用,但是原来那个值并未改变