Ich verstehe Zeiger nicht



  • Guten Tag,

    Ich arbeite momentan mit den Buch "Der C++ Programmierer" mit dem Standart C++17.
    Ich bin jetzt auf Kapitel 4 angelangt, wo es um die Zeiger geht. Ich verstehe aber nicht wozu ich sie brauche, und generell das ganze Thema mit den Zeigern, fällt mir sehr schwer. Was ich bisher verstanden habe ist das ein Zeiger auf eine Speicheradresse zeigt, wo sich halt auch der Wert befindet.

    Könnte jemand mir jemand den Zweck der Zeiger erklären? Fiel euch das Thema mit den Zeigern auch schwer? Und wie habt ihr das Thema verstanden?

    Mit freundlichen Grüßen



  • Ein Zeiger ist so praktisch, wie ein Adressbuch einer Stadt. Wenn Du die Adresse von einer Person hast, kannst Du sie jederzeit besuchen. Wenn Du fies bist, kannst Du die Person auch töten und jemand anderes dorthin verschieben. Wenn Du nicht weißt, wo die Person lebt, ist es schwieriger, sie zu töten. Dann kannst Du nur Krieg spielen und wahllos töten und hoffen, daß die richtige Person dabei ist.



  • @mgaeckler Danke!


  • Mod

    Der Zeiger erlaubt vor allem Indirektion. Das kann zum einen das sein, was mgaeckler beschrieben hat, aber das ist eigentlich nur der unmittelbare technische Zweck von Zeigern. Viel wichtiger ist, dass man durch die Indirektion Dinge erreichen kann, die man unmöglich ohne Indirektion machen kann.

    Zum ersten wäre da die Verkettung von Zeigern zu komplexen Datenstrukturen. Der Zeiger kann in mgaecklers Analogie ein Adressbuch sein. Aber was, wenn in dem Haus zu einer der Adressen ein (oder mehr) weitere Adressbücher liegen? Man kann damit ein ganzes komplexes Netzwerk von Beziehungen zwischen verschiedenen Adressen/Häusern herstellen.

    Zum zweiten erlaubt es die Indirektion, dass man logische Veränderungen an den "Häusern" vornehmen kann, ohne die Häuser selber zu verändern. Ich kann in meinem Adressbuch alle Bewohner einer Straße alphabetisch ordnen, und danach die Bewohner in alphabetischer Reihenfolge besuchen. Die Straße und die Häuser verändern sich dadurch nicht. Wenn ich diese Indirektion nicht hätte, müsste ich die echten physikalischen Häuser in der Straße in die richtige Reihenfolge bringen. Das geht vielleicht bei kleinen Spielzeughäusern noch, aber kann schnell unmöglich oder absurd schwer werden.



  • @Calrusch sagte in Ich verstehe Zeiger nicht:

    Fiel euch das Thema mit den Zeigern auch schwer?

    Nö.

    Und wie habt ihr das Thema verstanden?

    Ich wusste bereits was Zeiger sind, da ich C (erstmal ohne ++) erst als 3. Sprache gelernt habe - erst BASIC dann 68k Assembler und dann C -- und dann C++.
    Wenn du nicht-triviale Dinge in Assembler programmieren kannst und halbwegs verstehst wie ein Computer generell auf dieser Ebene arbeitet, dann weisst du auch was Zeiger sind.



  • Hallo,

    Hier ist auch eine recht ausführliche Erklärung.
    http://www.highscore.de/cpp/einfuehrung/zeiger.html
    Ich habs nicht komplett durchgelesen aber villeicht ist die erhellender als das Buch.
    Ich selber habe einen ähnlichen Lernweg wie hustbaer genommen. Deswegen sind Zeiger auch kein Problem.


Log in to reply