Guten Tag,
ich bin grade in der Prüfungsvorbereitungsphase und bin auf ein Verständnis Problem gestoßen,
es geht um folgenden Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <stdio.h> int main(void) { int a=17, b=2; int *z1=&a, *z2=&b; *z1‐=2; (*z2)++; printf("%d %d\n",*z1,*z2); *z1%=*z2; printf("%d %d\n",*z1,*z2); z1=z2; printf("%d %d\n",*z1,*z2); printf("%d %d\n",a,b); // Hier befindet sich meine Anmerkung: *z1‐=1; *z2+=2; printf("%d %d\n",*z1,*z2); printf("%d %d\n",a,b); // Ebenfalls return 0; } |
Das Programm initialisiert 2 Variablen, a und b.
Anschließend wird jeweils ein Zeiger auf die Adresse von a oder b initialisiert.
Es werden verschiedene Operationen durchgeführt und anschließend soll man sagen wie die Ausgabe des Programms lautet.. ich probier es mal:
z1 zeigt auf a → z1 = 17
z2 zeigt auf b → z2 = 2
z1-=2; → 17 - 2 = 15 → z1 = 15;
(*z2)++; → 2 + 1 = 3 → z2 = 3;
Erste Ausgabe lautet 15 3
*z1%=*z2 → 15 % 3 = 0 → also z1 = 0
Zweite Ausgabe lautet 0 3
z1 = z2 → nun wird dem zeiger z1 der Wert von z2 übergeben, sodass beide die Selbe Adresse haben.
Dritte Ausgabe = 3 3
Dann wird einmal a & b ausgegeben..
Welche Werte sind dort enthalten ?
Die Lösung des ganzen Programms lautet:
15 3
0 3
3 3
0 3
4 4 ← ab hier wird's interessant und für mich irgendwie leider nicht nachvollziehbar
0 4
Wäre für hilfe sehr dankbar,
Mit freundlichen Grüßen