Pointer / Zeiger in C



  • Hallo,
    ich beschäftige mich gerade mit C und verstehe bei Pointer / Zeiger noch nicht alles.
    Es geht um das eingefühgte Programm. Es geht um die Zeile:
    a = *c + *d; // a=14
    Ich verstehe nicht, wie es zustande kommt das *c den Wert 7 enthält! Ich komme einfach nicht darauf. Kann mir jemand erklären, wie dieses Zustande kommt bzw. ein paar Tipps geben ?
    Das wäre wirklich sehr nett von Euch!

    
    ```#include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
    int a=2, b=5, *c=&a, *d=&b;  // a = 2 b=5 *c=2 *d = 5
    
    a = *c * *d;		// a=10 *c=2 *d=5
    printf("Ausgabe von a %d\n\n",a);
    
    *d -= 3;		// b=2, *d=2
    printf("Ausgabe von d %d\n\n",*d);
    
    b = a * b;		// b=20 b= 2 a=10
    printf("Ausgabe von b %d\n\n",b);
    
    c = d;			// *c=20
    printf("Ausgabe von c %d\n\n",*c);  // hier ist c  = 20
    
    b = 7;			// b=7 *d=7
    printf("Ausgabe von d %d\n", *d); // da b auf die Adresse von *d zeigt, ist *d = 7
    printf("Ausgabe von c %d\n",*c);  // c = ???????????
    printf("Ausgabe von b ist %d\n\n",b);  // b = 7
    
    a = *c + *d;		// a=14
    printf("Ausgabe von a %d\n",a);
    printf("Ausgabe c1 %d und Ausgabe d1 %d \n\n",*c,*d);
    }```cpp
    
    

    Mfg, Reinhold



  • @Kwauka_BrKw sagte in Pointer / Zeiger in C:

    c = d; // *c=20

    Was hat diese Zeile für eine Auswirkung auf c? Worauf zeigt c nun? Warum ist *c = 20?

    Wenn du diese Fragen beantwortest, sollte klar sein, warum in der Zeile mit ???????? *c = 7 ist. Achtung: Du schreibst "Ausgabe von c", aber in Wirklichkeit gibst du *c aus!

    printf("Ausgabe von d %d\n", *d); // da b auf die Adresse von *d zeigt, ist *d = 7

    Wichtig: dein Kommentar stimmt nicht! b ist ein int und zeigt nirgendwo hin. d ist ein Zeiger und zeigt auf b.



  • Schreibe bitte in eine Zeile vor Deinem Code ``` und in eine Zeile nach Deinem Code ```. Alternativ markiere Deinen Code und klicke auf das </> in der Symbolleiste über dem Bearbeitungsfenster.
    Du kannst Deinen Beitrag nachträglich noch bearbeiten. Den Menüpunkt Bearbeiten findest Du hinter dem Drei-Punkte-Menü rechts unter Deinem Beitrag.


Log in to reply