#include<stdio.h>
void fun(int a[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%d ",a[i]);
}
int main()
{
int arr[]={1,2,3,4,5,6};
fun(arr+2,3);
return 0;
}
输出:3,4,5从第三个元素开始的数组已经在这里传递给了C中的fun()。在JAVA中没有这样的指针,那么如何在JAVA中这样做呢?
作为对下面一条评论的回应,我想添加一些我实际上想要做的事情的细节,因为对于评论部分来说太长了。我只需要递归地访问一个分段(一个数组)。实际上,我试图通过比较两个数组的中间值来找到“两个排序数组的中位数”,方法如下: 1)分别计算输入数组的中介m1和m2,ar1[]和ar2[]。2)如果m1和m2都是相等的,那么我们就完成了。返回m1 (或m2) 3)如果m1大于m2,则中位数出现在以下两个子数组中的一个。( a)从ar1的第一个元素到m1 (ar1 10.\n/2维) b),从m2到ar2的最后一个元素(ar2,n/2,n-1)(如果m2大于m1,则中值在一个元素中。
of the below two subarrays. a) From m1 to last element of ar1 (ar1[|_n/2_|...n-1]) b) From first element of ar2 to m2 (ar2[0...|_n/2_|]) 5) Repeat the above process until size of both the subarrays becomes 2. 6) If size of the two arrays is 2 then use below formula to get the median. Median = (max(ar1[0], ar2[0]) + min(ar1[1], ar2[1]))/2
发布于 2014-06-11 17:42:41
如果不修改数组,则可以使用Arrays.copyOfRange(int\[\] original, int from, int to)
创建范围的副本
import java.util.Arrays;
...
public static void main(String args[])
{
int arr[] = { 1, 2, 3, 4, 5, 6 };
fun(Arrays.copyOfRange(arr, 2, arr.length), 3);
}
public static void fun(int a[], int n)
{
for (int i = 0; i < n; i++) {
System.out.printf("%d ", a[i]);
}
}
发布于 2014-06-11 18:31:02
最简单的方法是将开始和结束索引传递给有趣的方法。
public static void main(String args[])
{
int arr[] = { 1, 2, 3, 4, 5, 6 };
fun(arr, 2, 5);
}
public static void fun(int a[], int m, int n)
{
for (int i = m; i < n; i++) {
System.out.printf("%d ", a[i]);
}
}
答复:3 4 5
发布于 2014-06-11 18:37:56
因为指针会在程序中引起一些严重的错误或安全问题,所以java不允许您按照C语言手动操作指针。据我所知,您必须复制指针。您可以使用java提供的数组类中的方法,也可以编写自己的代码。
https://stackoverflow.com/questions/24169216
复制相似问题