Pointer dereference operator Frage



  • Der erste und der zweite ausgegebene Wert müssten doch gleich sein? Bei mir kommt beim zweiten Wert 0 raus..
    Wenn ich den dereference operator wegnehme kommt der richtige Wert raus..verstehe nicht, warum ich den nicht da stehen lassen kann...

    //Erste Demonstration von Pointern//
    #include <stdio.h>
         int main()
    {
         int variable;
         int *ptr;
         ptr=&variable;
         *ptr = 10;
    
         printf("variable=%d *ptr =%d ptr=%d" , variable, *ptr, ptr);
         printf("\n");
    
         printf("Adresse variable              :%p\n", &variable);
         printf("Adresse auf die *ptr zeigt    :%p\n", *ptr);
         printf("Adresse des Pointers ptr      :%p\n", &ptr);
         system("PAUSE");
         return 0;
    }
    


  • Welche Ausgaben meinst du? In Zeile 14 hast du den Zeiger dereferenziert und gibst den Wert dahinter (10) als Zeiger aus.

    Ansonsten stimmt die Ausgabe doch, abgesehen davon, daß du einige Formatkennungen falsch eingesetzt hast.



  • Ich würde mal vermuten, dass er Zeile 14 meint. "Adresse auf die *ptr zeigt" würde ich so interpretieren, dass dort ptr ausgegeben werden soll und nicht *ptr (der Inhalt der Variable auf die ptr zeigt).

    Da ist der Dereferenzierungs-Operator nicht angebracht, weil du eben die Adresse der Variable, also den Inhalt von ptr anzeigen lassen willst. *ptr ist der Inhalt der Variable, auf die ptr zeigt.



  • Schau mal in Zeile 10, dann weißt du welche Werte gleich sind 🙂

    variable und *ptr sind vom Typ int
    ptr (ohne 😉 ist der Zeiger.



  • Da ist der Dereferenzierungs-Operator nicht angebracht, weil du eben die Adresse der Variable, also den Inhalt von ptr anzeigen lassen willst. *ptr ist der Inhalt der Variable, auf die ptr zeigt.

    Das war es was ich gesucht habe (: dankeschön


Log in to reply