Gemeinsame Verwendung für Zeiger?

8

Ich bin ein Programmierer Student mit zwei Klassen in C #, aber ich nehme nur meine erste Klasse in C ++, und damit bin ich auf Zeiger ausgesetzt.

Ich weiß, wie sie funktionieren, und die richtige Art, sie zu benutzen, aber ich habe mich gefragt, wie professionelle Programmierer Zeiger in ihren Programmen verwenden.

Wie benutzt man Zeiger? Oder tust du?

Dies wird mir helfen, einige praktische Anwendungen für Zeiger zu verstehen, also danke!

    
Alex 27.01.2010, 05:07
quelle

4 Antworten

16

Jedes Mal, wenn Sie eine Referenz in C # verwenden. Eine "Referenz" ist nur ein Zeiger mit ausgefallenen Sicherheitsairbags.

Ich verwende Zeiger alle sechs Zeilen in dem C ++ Code, den ich schreibe. Aus der Spitze meines Kopfes sind dies die häufigsten Anwendungen:

  • Wenn ich ein Objekt dynamisch erstellen muss, dessen Lebensdauer den Bereich überschreitet, in dem es erstellt wurde.
  • Wenn ich ein Objekt zuordnen muss, dessen Größe zur Kompilierzeit unbekannt ist.
  • Wenn ich das Eigentumsrecht eines Objekts von einem Ding auf ein anderes übertragen muss, ohne es tatsächlich zu kopieren (wie in einer verknüpften Liste / Heap / was auch immer von wirklich großen, teuren Strukturen)
  • Wenn ich von zwei verschiedenen Orten auf dasselbe Objekt verweisen muss.
  • Wenn ich ein Array in Scheiben schneiden muss, ohne es zu kopieren.
  • Wenn ich direkt in eine bestimmte Speicherregion schreiben muss (weil es speicherplatzierte IO hat).
Crashworks 27.01.2010, 05:18
quelle
6

Für Staters verwenden Sie sie in Ihren Datenstrukturen , wie die verknüpfte Liste usw. An jeder Stelle benötigen Sie dynamisch zugewiesenen Speicher das heißt, Speicher, den Sie nicht zur Kompilierzeit kennen, verwenden Sie einen Zeiger .

    
Muad'Dib 27.01.2010 05:16
quelle
1

Wenn Sie etwas Zeit zum Lesen eines Buches haben, empfehle ich Ihnen Die C-Programmiersprache , die Zeiger verwenden.

Ein einfaches Beispiel für eine Standardfunktion:

%Vor%     
cobbal 27.01.2010 05:14
quelle
1

Teil 1 von 2

Zeiger müssen häufig mit C-Bibliotheken verbunden werden, wenn Daten an eine vorhandene API übergeben werden müssen. Dieser Mechanismus ist nicht auf "Legacy" -Systeme beschränkt, moderne Beispiele umfassen OpenGL, DirectX und Win32.

unten ist ein Beispiel aus OpenGL: glVertexPointer (int, float, int, float *) verwendet einen Float-Zeiger als erstes Argument.

%Vor%

Anstatt ein statisch definiertes Array zu verwenden, wäre es in Ordnung, folgendes zu tun:

%Vor%

oder wenn Sie std :: vector

verwenden möchten %Vor%

Teil 2 von 2

Zeiger auf Objekte und Funktionszeiger sind nützlich, um statische Elementfunktionen zu definieren, die für eine bestimmte Instanz einer Klasse verwendet werden müssen. Dieses Idiom erscheint in Callback-Mechanismen.

%Vor%

Wenn Sie die callbackAPI steuern, könnten ähnliche Ergebnisse mit Vererbung und Templates erzielt werden. Die obigen Beispiele zeigen eine Möglichkeit, mit einer Callback-API zu arbeiten, die von einem Drittanbieter zur Verfügung gestellt wird, wenn ein Funktionszeiger benötigt wird.

    
Marc 27.01.2010 06:32
quelle

Tags und Links