此代码:
import java.util.*;
public class Fix
{
int Search(int arr[], int x,int n)
{
for (int i = 0; i < n; i++)
if (arr[i] == x)
return i;
return 0;
}
void Func(int in[], int pre[], int n)
{
int root=Search(in,pre[0],n);
if (root != 0)
Func(in,pre+1, root); //error
if (root != n-1)
Func(in+root+1, pre+root+1, n-root-1); //error
System.out.print(pre[0]+" ");
}
}
错误点是:
Func(in,pre + 1,root);
和
Func(在+ root + 1,pre + root + 1,n-root-1);
为什么会这样?在C ++中,没有发生此错误。
答案 0 :(得分:0)
Java不是C ++。因此,您无法使用C ++的语法在Java中完成任务。
在Java中,您不能在数组和int上使用+
。所以pre + 1
会失败。此外,将数组递增1没有任何意义。
第二个错误基本上是一样的,将数组增加1 毫无意义。
我想你想把数组指针加一,我是对的吗?如果你想这样做,使用其他语言!我们在Java中没有指针!他们只是不存在!在Java中既没有指针也没有goto
,因为Sun可能认为它们是PURE EVIL。
有一个(坏)解决方法。使用C#! C#有这个不安全的关键字可以创建一个不安全的上下文:
unsafe {
}
在不安全的上下文中,您可以使用指针stackalloc
以及更多“不安全”的东西。但是,不安全的上下文在C#中非常罕见,除非必须使用它们,否则不要使用它们!