[C++]Zeiger & ihre Vorteile

  • Hallo Lieber Community ,


    Mit der Zeit musste ich feststellen das einige Leute nicht wissen Wozu die Begriffe bzw. Operatoren & = AdressOf und * = Pointer bedeuten ,
    jedoch sind diese Operatoren bezüglich der Ressourcen von großer Wichtigkeit, zudem sind sie Extrem komplex in ihrer Anwendungsweise.


    Als Beispiel :


    Code
    int variablebla = 5;
    int *zeiger = &variablebla;



    Ganz einfach, "variablebla" hat den Inhalt 5 , so nun haben wir den Zeiger "zeiger" was man ganz gut durch * erkennen kann,
    wir verweisen den zeiger nun auf variablebla , also geben den Zeigt er die Adresse von "variablebla"
    die enthält den Wert 5, nun hat "zeiger" nur die Adresse von "variablebla" also wenn wir "zeiger" ändern würden,
    würde "variablebla" auch den selben Wert erhalten.


    Wie man sieht Funktioniert das ganze wie eine Verknüpfung , kommen wir so den Arrays in Kombination mit den Zeigern,
    diese haben noch eine spezielle Eigenschaft , jetzt folgt erst einmal ein Beispiel :


    Code
    int reihenfolge[] = {7,8};
    int *zeiger = reihenfolge;


    Würden wir hier Adressof verwenden also den Operator & würden wir angeben das zeiger ebenfalls ein Array der Größe 2 wäre
    wie man sieht daher verweisen wir nur auf den Anfang der Array.


    der Zugriff erfolgt ganz leicht , als Beispiel erzeugen wir eine Ausgabe :


    printf("Unser Wert wäre %i",*zeiger);


    Hier setzen wir eine Zeiger Markierung damit das Programm weiß das wir ihm keine Adresse geben ,
    würden wir Adressof verwenden würde er uns ebenso die Adresse ausgeben wie ohne AdressOf,
    da wir so auf keine Spezielle stelle zeigen würden & somit einfach die Adresse im Speicher ausgegeben wird.


    Kommen wir zum Spezial , wir können mit einem Zeiger auch wandern , sprich


    Code
    *zeiger++;


    Wir würden im Speicher einmal vor springen so würden wir in dem Fall auf den nächsten Wert in der Array zeigen, der 8 wäre.


    Wir können den Zeiger auch wie eine Array behandeln, da kommt es noch besser, da wir uns so eine gewisse Arbeit ersparen & gleichzeitig
    mit den gleichen Variablen arbeiten können.


    Code
    printf("Array Variable ist %i",zeiger[1]);


    Hier müssen wir nicht extra auf die Stelle zeigen da die stelle durch die Array Angabe schon vorhanden ist,
    wenn wir die Adresse des Speichers haben wollen können wir ein AdressOf verwenden ( & )


    Für die verarbeitung großer Datenmengen sind Zeiger ziemlich nützlich wie ihr seht, Zeiger kosten im Speicher zudem nur einen Byte,
    sie sind wie man sieht extrem komplex.


    Erweiterte Anwendungen von Zeigern im Bezug auf Speicherreservierung :


    Code
    int *zahlen;
    zahlen = new int[5];
    zahlen[0] = 3;
    zahlen[1] = 4;


    usw...


    Hierbei gibt der zeiger an die Startadresse für das Speicherfeld an von der Stelle aus können im Speicher später Plätze reserviert werden,
    egal wie groß , löschen kann man sie auch ganz leicht wieder.


    Code
    delete []zahlen;


    Hiermit gebt ihr den reservierten Speicher wieder komplett Frei.



    So das war es fürs erste, ich werde das Tutorial bei bedarf noch erweitern.


    Ich hoffe ich konnte euch helfen.

    Mfg. BlackFoX_UD_ alias [BFX]Explosion