Zeiger



  • Hallo,

    ich bin neu hier und beschäftige mich seit ca. 2 Monaten mit C++.... soweit verstehe ich alles, aber wiederhole grade das Thema "Zeiger". Habe mir eben diese Seite durchgelesen-->http://www.highscore.de/cpp/einfuehrung/zeiger.html
    und finde, dass es eigentlich super erklärt ist. Also ich verstehe, WAS Zeiger sind, ich verstehe, was sie tun und wie ich sie verwenden kann, aber: wozu dienen sie?
    Verwendet man sie nur in Funktionen oder auch woanders? Wieso macht man es sich so kompliziert und greift mit einem Zeiger auf eine Variable zu, wenn es doch viel einfacher wäre, einfach den Variablennamen einzugeben?
    Dafür gibt es sicherlich einen guten Grund, doch leider kann ich auch nach mehrmaligem Durchlesen den Sinn nicht wirklich erkennen. Hoffe, dass ihr mir weiterhelfen könnt, vielleicht an einem verständlichen Beispiel.
    Vielen Dank schonmal!

    LG
    Janni




  • Mod

    Außerdem ermöglichen Zeiger überhaupt erst die Konstruktion der komplizierteren Datenstrukturen wie z.B. Listen, Sets und Maps. In C++ muss man diese zwar nicht mehr selbst implementieren, da sie schon Standard sind, aber intern sind diese mit Zeigern gemacht. Und wenn man mal eine etwas ausgefallenere Datenstruktur benötigt, die nicht Standard ist, braucht man die Zeiger dafür.

    Bei der Übergabe von Objekten sind Zeiger in C die Möglichkeit um call by reference zu erreichen. Dies ist in C++ zwar auch wieder durch Referenzen vereinfacht, aber diese sind auch häufig wieder intern mit Zeigern gemacht.

    Und die Dinge die rean genannt hat.



  • Mit Zeigern kann man gut alle(oder einzelne) Elemente in Arrays ansprechen:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int array[19];
        int loop;
        char dumb;
    
        for (loop = 1; loop <= 20; loop++)  // Zuweisen von Werten
        {
            array[loop] = loop - 1;
        }
    
        for (loop = 1; loop <= 20; loop++)  // Ausgeben von Werten
        {
            cout << array[loop] << endl;
        }
    
        cin >> dumb;
        return 0;
    }
    

Anmelden zum Antworten