JAVA 和C++ 参数传递

C++

#include <iostream>

using namespace std;
class Box
{
   public:
      int x;   


};
/****值传递   在函数栈中复制了一份外部变量的值。
与java对象是引用类型,函数栈中只保留对象地址不同,
在C++中,复制整个对象的内容到函数栈中。
****/
void Fun1(Box b)  

Box b1;
b1.x=6;
b=b1;
  // b.x=1;  
}  



//指针传递   在函数栈中存放的是实参地址,等同于java引用类型参数传递
void Fun2(Box * b)  
{  
  // b->x=2; 
Box b1;
b1.x=8;
b = &b1;
}  


/***引用传递   在函数栈中存放的是实参地址,
但是采用间接寻址方式,所以任何操作都相当于在外部变量上执行的
***/
void Fun3(Box & b)  
{  
   Box b1;
b1.x = 9;
b=b1;
//b.x=3;  
}  

int main(){
    Box b;
    b.x=10;
    Fun1(b);
   // Fun2(&b);
    //Fun3(b);
    cout<<b.x<<endl;
    return 0;

}





JAVA

public class A {
int x;

}

//java传引用类型参数时与C++的指针传参过程相似。

public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
A a= new A();
a.x=0;
System.out.println("原值:"+a.x);
func2(a);
System.out.println("执行func2之后:"+a.x);
func3(a);
System.out.println("执行func3之后:"+a.x);
func1(a);
System.out.println("执行func3之后:"+a.x);
}

public static void func1(A a) {
a.x=1;
}


public static void func2(A a) {
a=null;
}

public static void func3(A a) {
A a0=new A();
a0.x = 3;
a=a0;
}

}


java代码执行结果:



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值