C++指针指向Java

Bat*_*ude 9 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?
Run Code Online (Sandbox Code Playgroud)

das*_*ght 14

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

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


Bat*_*ude 3

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

  • 您应该考虑接受@dasblinkenlight的答案,因为他是第一个建议使用数组的人 (5认同)