C ++ Zeiger auf Zeiger in Java

8

Ich bin ein Java-Noob. Ich war in der Lage, das Konzept der Umwandlung von C / C ++ - Zeigern in Java-Referenzen zu verstehen, und dies ist ziemlich reibungslos verlaufen.

Ich habe einen Code gefunden, der Zeiger auf Zeiger hat (zB ** ptr). Ich muss den Zeiger dereferenzieren und den Wert des Zeigers ändern, auf den er zeigt (zB * ptr = & amp; newthing;)

Das scheint in Java viel schwieriger zu sein. Hat jemand Ideen, wie man dieses Problem lösen kann? Schnelle Google-Suche ergab nichts.

Hier ist ein Codebeispiel in C ++. Ich möchte etwas ähnliches in Java arbeiten, aber die Variable ptr_to_ptr ist ein Problem:

%Vor%     
Batdude 20.06.2012, 19:28
quelle

5 Antworten

3

Ich werde meine eigene Frage beantworten. Ich konnte keinen einfachen Weg finden, einen Zeiger auf einen Zeiger (Verweis auf eine Referenz) in Java zu machen. Also habe ich den Code neu strukturiert, um Arrays von Referenzen und Array-Indizes anstelle von Zeigern zu verwenden. Ich denke das wird funktionieren (es hat leicht codiert), aber ich habe es noch nicht getestet.

    
Batdude 20.06.2012, 22:33
quelle
13

Ein typischer Trick, mit dem Zeiger auf Zeiger in Java modelliert werden können, ist die Verwendung von Arrays: Ein Verweis auf das Array selbst dient als "Zeiger", während das Array-Element als das Element dient, auf das gezeigt wird. Sie können diese so verschachteln, wie Sie möchten, aber der Code sieht nicht annähernd so gut aus wie in C / C ++.

Anstatt C / C ++ - Idiome in Java zu portieren, sollten Sie eine veränderbare Klasse erstellen, mit der Sie das darin enthaltene Element ändern können. Diese Klasse würde als "Zeiger" dienen, um Ihnen die Funktionalität zu geben, nach der Sie suchen, und es würde Ihrem Java-Code auch Lesbarkeit verleihen. Generics vereinfachen Ihre Aufgabe erheblich und erfordern nur eine Implementierung, die Sie wiederverwenden könnten.

    
dasblinkenlight 20.06.2012 19:38
quelle
4

Der Zeiger auf Zeiger ist in Java nicht direkt abbildbar. Ich nehme an, dass Sie einem Zeiger innerhalb einer Funktion ein neues Objekt zuweisen möchten.

Soweit ich weiß, können Sie das nur lösen, indem Sie ein Wrapper-Objekt verwenden, das als Referenz dient, so dass Sie die echte Referenz darin ändern können:

%Vor%

Hoffe, das hilft

    
TeaOverflow 20.06.2012 19:49
quelle
1

Java hat keine Zeiger. Aber man kann sagen, dass wenn Sie ein Object erstellen, Sie einen Verweis (Zeiger) auf dieses Object erstellen.

Zum Beispiel:

%Vor%

Der Verweis obj zeigt also auf das neue Object , das Sie gerade erstellt haben.

Wenn Sie nun das Konzept des Zeigers in einen Zeiger umwandeln möchten, könnten Sie einfach eine Referenz erstellen, die auf eine vorhandene Referenz verweisen würde.

%Vor%     
Kazekage Gaara 20.06.2012 19:35
quelle
0

Die einzige "Zeiger-ähnliche" Methode ist unsicher (). Sie können Speicher damit belegen. Aber Sie können nicht außerhalb des JVM-Bereichs gehen:)

    
quelle

Tags und Links