关于算法练习1.1中的中参数传递方式思考

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没变。
故会产生 对象作形参,传递的是引用,但是原来那个值并未改变


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值