Das ist meine Antwort, und ich kann nicht versprechen, ein Experte zu sein, aber ich habe festgestellt, dass Zeiger in einer meiner Bibliotheken, die ich schreibe, großartig sind. In dieser Bibliothek (Es handelt sich um eine Grafik-API mit OpenGL:-)) können Sie ein Dreieck mit an sie übergebenen Vertex-Objekten erstellen. Die draw-Methode nimmt diese Dreieck-Objekte und zeichnet sie basierend auf den von mir erstellten Vertex-Objekten. Nun ja, das ist okay.
Aber was ist, wenn ich eine Vertex-Koordinate ändere? Bewegen oder so mit moveX() in der Vertex-Klasse? Nun ja, jetzt muss ich das Dreieck aktualisieren, indem ich weitere Methoden hinzufüge, und die Leistung wird verschwendet, weil ich das Dreieck jedes Mal aktualisieren muss, wenn sich ein Vertex bewegt. Es ist immer noch keine große Sache, aber es ist nicht so toll.
Jetzt, was ist, wenn ich ein Mesh mit Tonnen von Vertices und Tonnen von Dreiecken habe, und das Mesh rotiert und sich bewegt, und so weiter. Ich müsste jedes Dreieck aktualisieren, das diese Vertices verwendet, und wahrscheinlich jedes Dreieck in der Szene, weil ich nicht wüsste, welche Vertices verwendet werden. Das ist extrem rechenintensiv, und wenn ich mehrere Meshes auf einem Landschaftshintergrund habe, oh Gott! Ich habe ein Problem, weil ich fast jedes Dreieck in fast jedem Frame aktualisiere, weil sich diese Vertices die ganze Zeit ändern!
Mit Zeigern müssen Sie die Dreiecke nicht aktualisieren.
Wenn ich drei *Vertex-Objekte pro Dreiecks-Klasse hätte, würde ich nicht nur Speicher sparen, weil ein Haufen von Dreiecken nicht drei Vertex-Objekte haben, die an sich groß sind, sondern auch diese Zeiger würden immer auf die Vertices zeigen, für die sie gedacht sind, egal wie oft sich die Vertices ändern. Da die Zeiger immer noch auf denselben Vertex zeigen, ändern sich die Dreiecke nicht, und der Aktualisierungsprozess ist einfacher zu handhaben. Falls ich Sie verwirrt habe, würde ich es nicht bezweifeln, ich möchte nicht behaupten, ein Experte zu sein, ich möchte nur meinen Senf dazu geben.
8 Stimmen
Bereits diskutiert unter dieser Frage Hoffe, das hilft!
0 Stimmen
Eine weitere Diskussion über Pointer hier.
4 Stimmen
Für eine Liste von Büchern, siehe stackoverflow.com/questions/388242/…. Nach Java fand ich Accelerated C++ sehr nützlich.
265 Stimmen
Wir verwenden Zeiger, weil es einfacher ist, jemandem die Adresse zu Ihrem Zuhause zu geben, als jedem eine Kopie Ihres Zuhauses zu geben.
28 Stimmen
@RishiDua Das ist die beste Erklärung eines Zeigers, auf die ich je gestoßen bin. Danke dafür, es hat mein Verständnis erhöht :)
3 Stimmen
Pointern können auch verwendet werden, wenn Sie mehr als einen Wert/Objekt zurückgeben möchten.
2 Stimmen
Unterstützt von Rishi Dua, sind die Links in den obigen Kommentaren wie Zeiger. Stellen Sie sich vor, wenn sie stattdessen ganze Artikel oder Diskussionen hier kopiert und eingefügt hätten. Wir würden schnell "Platzmangel" auf der Seite haben.
0 Stimmen
@RishiDua wenn ich diesen Satz nur gesehen hätte, als ich anfing, C zu lernen... so viel Zeit gespart.. Danke :)