Yahoo Clever wird am 4. Mai 2021 (Eastern Time, Zeitzone US-Ostküste) eingestellt. Ab dem 20. April 2021 (Eastern Time) ist die Website von Yahoo Clever nur noch im reinen Lesemodus verfügbar. Andere Yahoo Produkte oder Dienste oder Ihr Yahoo Account sind von diesen Änderungen nicht betroffen. Auf dieser Hilfeseite finden Sie weitere Informationen zur Einstellung von Yahoo Clever und dazu, wie Sie Ihre Daten herunterladen.
Zeiger, Auschnitt aus C++ Programm?
(01) int a = 2;
(02) int b = 1;
(03) int c = 0;
(04) int* p;
(05) int* q;
(06)
(07) p= &a;
(08) q= &b;
(09) c = *p + *q;
(10) q = p;
(11) b = *q * c;
(12) q = &c;
(13) *p = *q;
(14) a = b/a;
Kann mir jemand nach den Zeilen (08), (11) und (14) die Beziehungen zwischen den Variablen a, b und c sowie den Zeigern p und q grafisch darstellen? und erklären/sagen welche werte am Ende bei den Varibalen stehen?
Danke schonmal im vorraus!
2 Antworten
- Anonymvor 7 JahrenBeste Antwort
Grafisch darstellen ist schwer in YC?
Ich versuche es zu kommentieren und hoffe, Du kommst damit klar (in Ruhe lesen!)
Fange mit (07) an ^^:
(07) p=&a; // p zeigt auf Adresse von a (auf a zeigen)
(08) q=&b; // q zeigt auf b
(09) c=*p+*q; // wie c=a+b=3
(10) q=p; // q zeigt nun auf das gleiche wie p, d.h. auf a
(11) b=*q*c; // wie b=a*c=6
(12) q=&c; // q zeigt auf c
(13) *p=*q; // wie a=3
(14) a=b/a; // a=6/3=2
So...Ich habe lange nicht mehr mit C++ gearbeitet und hoffe es, dass ich richtig liege ^^
- bewinolLv 6vor 7 Jahren
So wird es vielleicht noch klarer:
((01) int a = 2; // Variablendeklaration und Zuweisung (a ist von Typ Integer und erhält den Wert 2)
(02) int b = 1; // - " - (b ist von Typ Integer und erhält den Wert 1)
(03) int c = 0; // - " - (c ist von Typ Integer und erhält den Wert 0)
(04) int* p; // Pointerdeklaration (p ist Zeiger auf auf einen Typ Integer)
int *p; // richtige Schreibweise
(05) int* q; // Pointerdeklaration (q ist Zeiger auf auf einen Typ Integer)
int *q; // richtige Schreibweise
(06)
07) p=&a; // p ist die Adresse wo a gespeichert ist (zeigt auf a)
(08) q=&b; // q ist die Adresse wo b gespeichert ist (zeigt auf b)
(09) c=*p+*q; // c = Wert in p + Wert in q (= a + b = 3)
(10) q=p; // q zeigt nun auf die gleiche Adresse wie p, also auf a
(11) b=*q*c; // b = Wert in q * c (= a * c = 6)
(12) q=&c; // q zeigt jetzt auf c
(13) *p=*q; // der Adresse von a wird der Wert der Adresse von c zugewiesen (a = c = 3)
(14) a=b/a; // a=6/3=2
Adresse-->Inhalt der Adresse (byteweise)
p-2--------->?
p-1--------->?
p------------>Low-Byte von a
p+1-------->High-Byte von a
p+2-------->?
p+3-------->?
Die Operation p= &a; weist dem Zeiger p die Speicheradresse der Variablen a zu.
Die Operation *p = 3; weist der Variablen an der Adresse p den Wert 3 zu.
Die Operation *p = *q; weist der Variablen an der Adresse p den Wert der Variablen an der Adresse q zu.