调用函数f时传递给形参X的值为5,若采用传引用的方式调用g(a),则函数f的返回值为??
程序如下:
f(int x)
int a=2*x-1;
g(a);
return a+x;g(int y)
int x;
x=y-1;y=x+y;
return;
希望大家能给小弟一个完整的解题过程,谢了!

解决方案 »

  1.   

    14,java都是传值,函数g不会改变a的值
      

  2.   

    对于基本的数据类型,如int,byte,long,boolean等,java是传值,不会改变传进来的变量本身的值(传进来的是值的副本)但是对于Object的子类,java传进来的都是引用。所以改变参数对象的属性会影响到参数本体。
      

  3.   

    参数的传递有2种争论
    1基本数据类型是传值,作为对象传递是传引用
    2全部都是传值
    其实2种说法都是对的..主要是看你怎么理解.
    f(int x)
    int a=2*x-1;//a=9
    g(a);
    return a+x;//14g(int y)
    int x;
    x=y-1;y=x+y;
    return;
    传的是基本类型.14
      

  4.   

    各位大侠,我知道JAVA都是采用传值的方式的,题目我再写清楚一点:
    函数f(),g()的定义如下所示,调用函数f时传递给形参X的值为5,若采用传值的方式调用g(a),则函数f的返回值为(),若采用传引用的方式调用g(a),则函数f的返回值为()
    f(int x)
    int a=2*x-1;//a=9
    g(a);
    return a+x;//14g(int y)
    int x;
    x=y-1;y=x+y;
    return;答案:第一题是14,第二题是22
    第一题是14大家都明白,是传值方式,我不明白第二题,希望大家能给个清楚的解题过程,谢谢
      

  5.   

    若采用传引用的方式调用g(a),函数g的参数是int,是基本类型,怎么传引用的方式?
      

  6.   

    如果是传引用,那么函数g里面对y的操作就修改了y指向的对象的值,也就是函数f里a的值,a在g里被修改成17,再加上x=5,就=22了
      

  7.   

    f里a不是9么,g(a)就是g(9)
    那么x=y-1,x就是8
    y=x+y,y不就是17了么
    由于是传引用,直接修改对象值,那么a就是17了
      

  8.   

    更进一步看这里:http://ephon.spaces.live.com/blog/cns!796FAD06E2C0A525!429.entry?_c11_blogpart_blogpart=blogview&_c=blogpart#postcns!796FAD06E2C0A525!429