我需要将一些c ++翻译成java,但我没有什么问题。
如何在方法中将它们声明为参数时必须处理指针?
static void test( double *output){}
还有什么以及如何替换struct?
struct test { int t;
int arg;
float *pva;
double *array;
}
然后在他们使用的代码中:
double test(struct test *test)
{}
哦,最后一个..这也是在struct test中,意思是:
test->arg
答案 0 :(得分:1)
static void test( double *output){}
这需要更多上下文,它可以表示指向double或double数组的指针。
struct test { int t;
int arg;
float *pva;
double *array;
}
struct
是具有默认class
访问级别的public
。您可以将其替换为具有public
成员的类。
test->arg
这会访问arg
中的test
成员。
答案 1 :(得分:1)
你没有Java中的指针,只有引用,只有对象(不是基本类型)。引用就像指针,但你使用'。'符号而不是'*'或' - >'。此外,您不需要删除Java中的对象,只需停止使用它们,最终将垃圾收集器用于销毁它们。
从上到下回答你的观点: 如果test是C ++中结构或类的指针,并且arg是test的成员变量,那么
test->arg
用于通过指针访问成员。这将映射到
test.arg
在Java中,如果arg是测试对象的公共成员变量。
我会翻译以下内容:
struct test
{
int t;
int arg;
float *pva;
double *array;
}
...
double test(struct test *test)
{}
到
public class Test
{
public int t;
public int arg;
float [] pva;
double [] array;
}
...
public static double test(Test test)
{}
对于第一种情况,即功能
static void test( double *output){}
你不能将指针传递给double并在Java中修改double。你必须返回双倍。如果您还需要double作为输入参数,则将其指定为通过值传递的普通参数:
static double test(double output)
{}
我希望这会有所帮助。
答案 2 :(得分:0)
在简单的情况下,您可以将float *
和double *
替换为float []
和double []
但是C ++允许您执行各种难以转化的不愉快的事情Java,因为它不允许在Java中使用。
您可以将struct
替换为class
如果您想了解基本的C ++语法,我建议您阅读有关如何使用C ++编程的指南。
答案 3 :(得分:0)
(1)
static void test( double *output){}
此处double*
可以替换为Double[]
(假设您执行了new Double[]
),并且该方法可以放在class
内。
class testMethod {
public static void test (Double []output) { }
}
(2)如何替换
struct
? 它可以替换为class
。
class test {
public int t;
public int arg;
public Float []pva;
public Double []array;
}
(3)
double test(struct test *test) {}
它可以是,
double test (test t) {}
(4)
test->arg
Java没有指针(尽管它是通过引用实现的);所以上面的陈述将是test.arg