Umgang mit Zeigern



  • Hallo,

    ich verstehe den Umgang mit Zeigern noch nicht so ganz.
    Ich habe hier den Ausschnitt aus einem Programm

    int* i = new int;
    *i=22;
    int z = *i;
    int &k=*i;
    
    cout<< k;
    

    Ich versuche zunächst mal zu erklähren was ich bisher verstanden habe.
    int* i = new int;
    legt einen Zeiger, der auf ein Objekt vom typ int zeigen kann, an und läst ihn auf das neue Objekt vom Typ int Zeigen

    *i=22;
    der Wert 22 wird in das Objekt geschrieben

    int z = *i;
    Der Wert von i wird an den Integer z zugewiesen

    int &k=*i; leider verstehe ich hier überhaupt nix mehr...



  • zu 3) Der Wert, auf den der Zeiger i zeigt, wird z zugewiesen

    zu 4) Hier handelt es sich um eine Referenz, ein Kapitel, welches in C++ "neu" (gegenüber ANSI-C) ist. Wenn Du Referenzen bereits kennst, wird Dir genügen, dass k eine Referenz auf den Speicherbereich ist, auf den i zeigt. Wenn nicht, warte das Kapitel über Referenzen ab 😉 (wobei das in C++ imho vor Zeigern gelehrt werden sollte)

    EDIT:
    Hilfreich beim Verständnis ist vielleicht, dass & und * in C++ zwei Bedeutungen haben: Nach einem Typ (z.B. int) definiert es Referenz respektive Zeiger, vor einer Variable (abseits der Definition) meint es Adresse respektive Inhalt eines Zeigers.



  • & und * in C++, das ist ein großes Problem.

    T* bedeutet Typ "Zeiger auf T"
    *pT bedeutet Inhalt von Zeiger pT 
    
    T& bedeutet Referenz auf T
    &T bedeutet Adresse von T
    
    pT = new T; // erzeugt ein Objekt T auf dem Freispeicher 
                // und liefert einen Zeiger pT zurück
    

Anmelden zum Antworten