Seite 1 von 1

Zeiger / Pointer

Verfasst: Fr Apr 03, 2020 7:30 pm
von Kwauka
Hallo,
ich beschäftige mich gerade mit Zeigern unter C! Habe folgenden Code kopiert und verstehe dort etwas nicht ganz. Vielleicht kann mir von Euch jemand das Problem erklären oder mir einen Tipp dazu geben. Ich verstehe folgende Code-Zeile nicht:
a = *c + *d;
Ich verstehe nicht, wie *c den Wert 7 zugewiesen bekommt! Wie gesagt es wäre supper von Euch wenn mir jemand das einmal erklären könnte.
Ich Danke Euch für die Hilfe.

MFG, Reinhold

Code: Alles auswählen

#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",*c);  // hier ist c  = 20
    printf("Ausgabe * von d1 %d\n",*d);
    printf("Ausgabe * von a %d\n\n\n",a); // a = 10

    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",b);  // b = 7
    printf("Ausgabe ** von a ist %d\n\n\n\n"); // a = 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);
    printf("Ausgabe von a %d\n\n",a);
}
EDIT nufan: Code-Tags

Re: Zeiger / Pointer

Verfasst: Fr Apr 03, 2020 9:30 pm
von nufan
Hallo Kwauka! :)

d wird nach der initialen Zuweisung nicht verändert und zeigt während des kompletten Programms auf b.

c zeigt nach folgender Zuweisung auf die gleiche Stelle wie d:

Code: Alles auswählen

c = d;
Im Endeffekt zeigt c nun also auch auf b.

b wird kurz vor deiner Ausgabe der Wert 7 zugewiesen:

Code: Alles auswählen

b = 7;
Nachdem c auf b zeigt, ist *c nun 7.

War das verständlich? :)

Re: Zeiger / Pointer

Verfasst: Sa Apr 04, 2020 10:44 am
von Kwauka
Hallo,
ja, das war verständlich, vielen Dank für die Antwort?
Viele Grüße