Zeiger



  • hallo

    kann kann mir mal einer den sinn bzw. einsatz von zeiger genauer erklären? soviel ich weis ist ein zeiger ein verweis auf einen speicherbereich. das war es auch schon. kann mir nun einer genauer erklären wozu zeiger genau sind und wann man sie anwenden sollte, muss, kann? lokale und globale variablen werden ja z.B. auf dem stack angelegt, was ja eigentlich auch im speicher ist. ein zeiger ist ja eben ein verweis in einem speicherbereich auf den man zugreifen kann. kann man ja aber auch mit lokalen und globalen variablen...

    irgendwie ist mir der sinn und einsatz von zeigern noch ein rätzel.



  • Ja, aber Variablen auf dem Stack unterliegen dem Gültigkeitsbereich, wenn der verlassen wird, fliegt auch die Variable und somit der Inhalt weg. Außerdem sind diese Variablen nicht dynamisch angelegt. Daten im Heap sind dann dynamisch anlegbar und sie können auch weiter existieren, wenn der Gültigkeitsbereich verlassen wird.

    Und dann noch etwas: Zeiger können auch auf nichts zeigen. Das kann also auch für logische und fachliche Zwecke missbraucht werden und nicht nur für technische Zwecke. Assoziationen lassen sich mit Pointern abbilden, weil es ja z.B. auch keine Assoziation geben kann (Pointer zeigt auf NULL).



  • Artchi schrieb:

    Ja, aber Variablen auf dem Stack unterliegen dem Gültigkeitsbereich, wenn der verlassen wird, fliegt auch die Variable und somit der Inhalt weg. Außerdem sind diese Variablen nicht dynamisch angelegt.

    aber klar werden die dynamisch angelegt. dynamischer geht's fast gar nicht mehr.



  • janunu schrieb:

    kann kann mir mal einer den sinn bzw. einsatz von zeiger genauer erklären?

    Auch wenn's vielleicht etwas schroff klingt, benutz die Forensuche. Das wurde schon etliche Male durchgekaut.

    janunu schrieb:

    soviel ich weis ist ein zeiger ein verweis auf einen speicherbereich.

    Yep. Ein Zeiger speichert im Grunde nichts anderes als einen simplen Adresswert.

    janunu schrieb:

    kann mir nun einer genauer erklären wozu zeiger genau sind und wann man sie anwenden sollte, muss, kann?

    In C++ verwendet man rohe Zeiger so gut wie gar nicht. Warum? Nun, zum einen gibt es Referenzen und zum anderen fertige Container. Zeiger verwendest du im Grunde nur dann, wenn du auf Zeigerarithmetik angewiesen bist oder die Schnittstelle bzw. Implementation dies vorgibt. ZB liefert new/new[] einen Zeiger.

    janunu schrieb:

    jlokale und globale variablen werden ja z.B. auf dem stack angelegt

    Nope. IdR werden nur automatische lokale Variablen im Stack angelegt.

    net schrieb:

    aber klar werden die dynamisch angelegt. dynamischer geht's fast gar nicht mehr

    Nope. Lokale Variablen sind per default immer automatisch.



  • groovemaster schrieb:

    net schrieb:

    aber klar werden die dynamisch angelegt. dynamischer geht's fast gar nicht mehr

    Nope. Lokale Variablen sind per default immer automatisch.

    das ist ja die dynamik



  • Nö, dynamisch ist sowas:

    new int[x]; // zur Compilezeit noch nicht bekannt -> dynamisch
    

Anmelden zum Antworten