下面的c程序,形参是2个指针,在函数体内对指针指向的内容进行修改,请写出对应的java程序(不许定义新类)。
void func(int *a, int *b){
  *a = 1;
  *b = 2;
}

解决方案 »

  1.   

    基本类型java中是传值的,java能解决的方法就是用类将a,b封装,然后把这个类作为参数
      

  2.   

    还有个折衷的办法:
    void func(int[] ab){
      ab[0] = 1;
      ab[1] = 2;
    }
      

  3.   

    Java是传值还是传引用?  5. 如何实现类似 swap 的方法  传值还是传引用的问题,到此已经算是解决了,但是我们仍然不能解决这样一个问题:如果我有两个 int 型的变量 a 和 b,我想写一个方法来交换它们的值,应该怎么办?  结论很让人失望——没有办法!因此,我们只能具体情况具体讨论,以经常使用交换方法的排序为例:    /** 例 6 */
        /**
         * @(#) Test.Java
         * @author fancy
         */
        public class Test {
            public static void swap(int[] data, int a, int b) {
                int t = data[a];
                data[a] = data[b];
                data[b] = t;
            }
            public static void main(String[] args) {
                int[] data = new int[10];
                for (int i = 0; i < 10; i++) {
                    data[i] = (int) (Math.random() * 100);
                    System.out.print(" " + data[i]);
                }
                System.out.println();
                for (int i = 0; i < 9; i++) {
                    for (int j = i; j < 10; j++) {
                        if (data[i] > data[j]) {
                            swap(data, i, j);
                        }
                    }
                }
                for (int i = 0; i < 10; i++) {
                    System.out.print(" " + data[i]);
                }
                System.out.println();
            }
        }  运行结果(情况之一):    78 69 94 38 95 31 50 97 84 1
        1 31 38 50 69 78 84 94 95 97  swap(int[] data, int a, int b) 方法在内部实际上是改变了 data 所指示的对象的成员数据,即上述讨论的第二种改变参数值的方法。希望大家能够举一反三,使用类似的方法来解决相关问题。
      

  4.   

    http://www.javaeye.com/topic/12961http://www.bc-cn.net/Article/kfyy/java/jszl/200601/3069.html