einfaches Beispiel für Zeiger



  • Guten Abend!
    Bin leider noch ziemlich unerfahren hinsichtlich der Programmierung!...aber dabei mir es anzueignen!
    Hätte folgendes Beispiel, was mich zum verzweifeln bringt!! 😞

    # include <stdio.h>

    int main()
    {
    int a=2, b=5, *c=&a, *d=&b;

    a = *c * *d; // a=10
    *d -= 3; // b=2, *d=2
    b = a * b; // b=20
    c = d; // *c=20
    b = 7; // b=7
    a = *c + *d; // a=14

    printf("%d", a);

    getchar();
    return 0;

    }

    Kann mir eventuell einer erklären warum für a letztlich 14 rauskommt!?!? 😞

    Vielen Dank!!



  • # include <stdio.h>
    
    int main()
    {
    	int a=2, b=5, 
                         *c=&a,  /*  c zeigt auf a */
                                *d=&b;  /* d zeigt auf b */
    
    	a = *c * *d;	// a=10
    	*d -= 3;		// b=2, *d=2
    	b = a * b;		// b=20
    	c = d;			// *c=20  ! Wichtiger: c zeigt jetzt auf dieselbe Stelle wie d. Und das ist b
    	b = 7;			// b=7
    	a = *c + *d;	// a=14  ! Da c und d auf b zeigen steht da im Prinzip a = b + b;
    
    printf("%d", a);
    
    getchar();
    return 0;
    
    }
    

  • Mod

    Murks schrieb:

    Hätte folgendes Beispiel, was mich zum verzweifeln bringt!! 😞

    Weil dieser Kommentar dich irreführt:

    c = d; // *c=20
    

    Wichtig ist nicht, was der momentane Wert der Variablen ist, auf die der Zeiger zeigt, sondern was die Variable ist, auf die der Zeiger zeigt (also der Wert des Zeigers selbst). Das ist nun nämlich die Variable b. Und die wird später 7.



  • Vielen, vielen Dank euch beiden!!
    Genau das war mein Problem!!...wenn ich es mit diesem Hinweis so durchrechne macht die 14 natürlich Sinn!!

    🙂 👍
    Angenehmen Abend noch!!


Log in to reply