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?


  • Administrator

    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!


Log in to reply