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.