Repetitorium PG : Pointer FH-Darmstadt, FB Informatik
Rep. PG1 – Kap. 5: PointerDipl. Inf. (FH) Michael Krauß2/10 Übersicht Pointer Operatoren this new
Rep. PG1 – Kap. 5: PointerDipl. Inf. (FH) Michael Krauß3/10 Zeigervariable (pointer) werden zur indirekten Adressierung benutzt werden in C++ so definiert: int IZahl = 5, IZahl1; int *ZeigerI; ZeigerI = &IZahl; int * ZeigerI1 = &IZahl1; enthalten Adressen eines Objekts anstelle des Objekts selbst
Rep. PG1 – Kap. 5: PointerDipl. Inf. (FH) Michael Krauß4/10 Zeigervariable (pointer) haben einen –Namen –Typ –Speicherplatz können den Wert des Objekts, auf das sie zeigen, lesen können den Wert des Objekts, auf das sie zeigen, ändern können zur Laufzeit neue Adressen zugewiesen bekommen, um auf andere Objekte zu zeigen
Rep. PG1 – Kap. 5: PointerDipl. Inf. (FH) Michael Krauß5/10 Pointer bekommen zur Compile-Zeit nur Speicher für eine Objektadresse, aber nicht den Speicher für das Objekt selbst zugewiesen. Sie werden vom C++ Compiler nicht initialisiert. u. U. nicht reproduzierbare Fehler Schadensbegrenzung double *ZeigerD = 0; double *ZeigerD(0); –`0´ zeigt an, dass sich ein Zeiger noch nicht oder nicht mehr auf ein definiertes Objekt zeigt. wenigstens reproduzierbare Abstürze guter Programmierstil
Rep. PG1 – Kap. 5: PointerDipl. Inf. (FH) Michael Krauß6/10 *,& und Operatoren Adreßoperator (&) und Dereferenzierungsoperator (*) sind zueinander invers Für Zeiger sind folgende Operatoren definiert ++, +, +=, [ ],, >=
Rep. PG1 – Kap. 5: PointerDipl. Inf. (FH) Michael Krauß7/10
Rep. PG1 – Kap. 5: PointerDipl. Inf. (FH) Michael Krauß8/10 Anwendung von Zeigern Call by reference –Ersatz für Referenzparameter in Parameterlisten von Funktionen/Methoden Indirektion –Zugriff auf Objekte und deren Memberfunktionen über Zeiger ist einSchlüsselkonzept von C++
Rep. PG1 – Kap. 5: PointerDipl. Inf. (FH) Michael Krauß9/10 Anwendung von Zeigern Kommandozeilenparameter –void main ( int argc, char *argv[ ]) {…} this-Zeiger in Klassen Zugriff auf dynamische Datenstrukturen mit Zeigern und new-Operator –Besser ist es, wenn man den Speicher erst zur Laufzeit, entsprechend dem tatsächlichen Bedarf anfordern (allokieren) kann. Aufruf von Memberfunktionen über -> Operator
Rep. PG1 – Kap. 5: PointerDipl. Inf. (FH) Michael Krauß10/10 new ? Mit dem new-Operator werden die Objekte nicht auf dem Stack angelegt, sondern auf dem Heap-Space! gewünscht