Frage zu Zeigern
-
Kann ein Zeiger auch auf etwas anderes als Speicheradressen zeigen, oder muss bei jeder Zuweisung explizit durch ein "&" die Adresse der Variable angegeben werden?
-
Ehm, ein Zeiger zeigt nicht auf eine Speicheradresse. Ein Zeiger ist eine Speicheradresse und zeigt über diese auf ein Objekt. Daher verstehe ich die Frage nun nicht so recht.
Grüssli
-
skullyan schrieb:
Kann ein Zeiger auch auf etwas anderes als Speicheradressen zeigen, oder muss bei jeder Zuweisung explizit durch ein "&" die Adresse der Variable angegeben werden?
Du kannst einen Zeiger auch mit einer numerischen Adresse initialisieren:
void* p = (void*)0xdeadbeef;
Was genau das bewirkt ist natürlich systemspezifisch.
(Ansonsten gäbe es z.B. noch Initialisierung mit einem new-Ausdruck, da kommt auch kein & vor, aber das wolltest du vermutlich nicht wissen)
-
Ja, ich weiß jetzt was ihr meint. Aber mal ne andere Frage: Benutzt man Zeiger nur um keine Abbilder von Variablen (etc.) zu erzeugen oder gibts noch mehr Einsatzgebiete von Zeigern?
-
skullyan schrieb:
Aber mal ne andere Frage: ...gibts noch mehr Einsatzgebiete von Zeigern?
Ohne Zeiger wird vermutlich kaum ein sinnvolles C++ Programm in der Praxis laufen. Zeiger sind für die dynamische Speicherverwaltung und Vererbung nahezu unabdingbar.
Wobei es hier besser wäre mit einem C++ Buch anzufangen und dann konkret am Beispiel genauere Fragen zu stellen.
-
in einem zeiger kann _alles_ drinstehen. natürlich muss man den compiler über-
listen und casten, aber prinzipiel ist ein zeiger nur ein (unter win32) 4 byte
großer speicherblock.int *a = (int *)2; int *b = (int *)3; int *res = ((int *)(((int)a)+((int)b)));
-
Die ganze Polymorphie und das Heap-Gedöhns basieren auf Zeigern!