Frage zu Pointer bzw. Zeiger



  • Guten Tag,
    ich habe in dem Programm eine Variable mit dem Wert 14. Ich möchte über die Speicheradresse die Zahl ausgeben (natürlich zu Testzwecken).
    Ich kann ja die Speicheradresse ausgeben indem ich einfach einen Pointer* erstelle, welcher auf die Speicheradresse der Variable Zahl zeigt.

    int main() {
    	int nummer = 14;
    	int* pointer = &nummer;
    	std::cout << *pointer;
    }
    

    Um die Nummer auszugeben, muss ich nochmal ein '*' vor dem pointer schreiben. Warum? Kann ich mir das so vorstellen:
    Ein Zeiger, welcher auf die Speicheradresse zeigt, von der ein Zeiger auf den Inhalt der Speicheradresse zeigt?
    Kann mir das nocheinmal wer erklären?
    LG



  • @redexception Stell dir einen Zeiger wie eine Adresse vor.

    Wir haben einen Namen: Erika Mustermann.
    Sie wohnt in der Hauptstraße 14.

    Der Name ist: "Erika Mustermann".
    Zeiger enthält den Wert: "Hauptstraße 14"
    Wenn du *Zeiger machst, guckst du nach, wer/was sich hinter "Hauptstraße 14" verbirgt. Und das wäre dann eben Erika. Der Zeiger selbst enthält aber nur "Hauptstr. 14".

    Genauso ist es hier.

    Dein pointer enthält die Adresse im Arbeitsspeicher, wo die "Nummer" abgelegt ist. Durch den * guckst du nach, was an der Stelle für ein Wert im Speicher steht. Stell dir vereinfacht vor, dass wenn du 1.000.000.000 Bytes RAM hast, die Adressen eben von 0 bis 999.999.999 gehen. Und an Adresse xy steht dann eben deine "14".
    (verinfacht, weil u.a. das Betriebssystem da ein Wörtchen mitzureden hat)



  • Dankeschön 🙂


Anmelden zum Antworten