Java:如何获取数组的地址? 我试图把C++代码转换成java。 C++代码片段是: FIDIN(数组+左+ I* 5, 5);

Java:如何获取数组的地址? 我试图把C++代码转换成java。 C++代码片段是: FIDIN(数组+左+ I* 5, 5);,java,arrays,Java,Arrays,传递的参数是数组地址,它根据i的值而变化。如何修改此代码以使其在Java中工作?方法如下: public int findMedian(int arr[], int n) { Arrays.sort(arr); return arr[n/2]; // Return middle element } 在java中,无法直接寻址内存位置 在C语言中,内存是用指针寻址的 在java内存中,使用引用寻址 关于java和C之间的比较,请看这个。正如其他人所说,java不允许您对指针执行数

传递的参数是数组地址,它根据i的值而变化。如何修改此代码以使其在Java中工作?方法如下:

public int findMedian(int arr[], int n)
{
    Arrays.sort(arr);
    return arr[n/2]; // Return middle element
}

在java中,无法直接寻址内存位置

在C语言中,内存是用指针寻址的

在java内存中,使用引用寻址


关于java和C之间的比较,请看这个。

正如其他人所说,java不允许您对指针执行数学运算,或者根本不允许您查看它们。通常,在Java中,指针和内存是编译器的问题,而不是您的问题

也就是说,您应该仍然能够查看数组中的值;只需将一个引用传递给数组本身,然后对索引进行任何必要的计算。很难在不确切知道该方法的作用的情况下获得更具体的信息。

这可行吗

findMedian(array, left+i*5, 5);
签名:

public int findMedian(int[] array, int offset, int value1) {
    //...
}

您可以使用
数组的其他重载。sort
仅对数组的一部分进行排序:

public static int findMedian(int arr[], int from, int n) {
    Arrays.sort(arr, from, from + n);
    return arr[from + (n / 2)]; // Return middle element
}
然后像这样打电话:

findMedian(array, left + i * 5, 5);

一开始误读了。否,不能传递对数组中值的引用。我建议使用一个函数,获取数组和偏移量,并将偏移量应用于函数内的访问。您能否演示该方法如何使用地址以及如何传递地址?我添加了函数findMedian@MasCOJ:偏移量和索引一样?这是混淆的,除了你不需要在java中单独传递大小,为什么你的实现不够好?我需要通过C++的代码来传递大小,数组长度仍然保持原始数组的大小。我需要修改数组以每次容纳5个元素。如果我只想修改数组的一部分,那么我应该使用什么?如果不想将其复制到其他数组中?如果要修改数组的单个元素,请使用命令array[4]=newValue;该方法仅尝试修改数组的一部分,而不是整个数组。该方法仅尝试修改数组的一部分,而不是整个数组。@Tehreem好的,这没有问题。将数组和有关要修改的部分的信息传递给方法。(这样做需要您更改方法标题。如果这根本不是一个选项,您可以做一些不好的事情,即创建新数组,其中包含要修改的部分和保持不变的部分,传递要修改的部分,然后重新加入它们。我不建议这样做。)