C ++指针指向Java

我是一个Java菜鸟。 我已经能够掌握将C / C ++指针转换为Java引用的概念,这已经相当顺利。

我点了一段代码指针(即** ptr)。 我需要取消引用指针并更改它指向的指针的值(即* ptr =&newthing;)

这在java中看起来有点难度。 有没有人对如何解决这个问题有任何想法? 快速谷歌搜索没有任何结果。

这是C ++中的代码示例。 我想在java中使用类似的东西,但是ptr_to_ptr变量是一个问题:

struct _coord { int x; int y; _coord * next_coordinate; } coordinate_t; coordinate_t buffer[100]; coordinate_t * head; coordinate_t ** ptr_to_ptr; if (wednesday) { ptr_to_ptr = &head; } else { ptr_to_ptr = &head->next_coordinate; } *ptr_to_ptr = &buffer[3]; // <<<---- HOW DO YOU MAKE THIS WORK? 

可以用来模拟Java指针指针的典型技巧是使用数组:对数组本身的引用用作“指针”,而数组元素用作指向的项。 您可以根据需要嵌套这些,但代码看起来并不像在C / C ++中那样好。

您应该构建一个可变类,以便更改其中的项目,而不是将C / C ++惯用语移植到Java中。 这个类可以作为一个“指针”来提供您正在寻找的function,它还可以为您的Java代码增加可读性。 generics大大简化了您的任务,只需要一个可以重用的实现。

指向指针的指针在Java中不能直接映射。 我假设您要将新对象分配给函数内的指针。

据我所知,你只能通过使用一个作为参考的包装器对象来解决这个问题,所以你可以修改里面的实际引用:

 class ObjRef { public RealObj obj; } void modifyRef(ObjRef ref){ ref.obj = new RealObj() } 

希望这可以帮助

我会回答我自己的问题。 我找不到任何简单的方法来指向java中的指针(引用引用)。 所以我重构了代码以使用引用数组和数组索引而不是指针。 我认为这将有效(它编码很容易),但我还没有测试过。

Java没有指针。 但是可以说,在创建Object ,您正在创建该Object的引用(指针)。

例如:

 Object obj = new Object(); 

因此,引用obj实际上指向刚刚创建的新Object

现在,如果要将指针的概念转换为指针,您可以简单地创建一个指向现有引用的引用。

 Object obj = new Object(); Object obj2; obj2 = obj; 

唯一的“指针式”方法是不安全的()。 你可以用它分配内存。 但你不能走出JVM区域:)