pointer struct initialzuweisung
-
Hallo an alle !
Kann mir jemand Erklären was der folgende Code macht ?
[cpp] struct { char c; int i } *pStruct = 0; [/cpp]
Mich irritiert der Ausdruck
[cpp] *pStruct = 0; [/cpp]
-
Definiere eine Variable "pStruct", welche vom Typ "Zeiger auf anonyme Struktur mit den Membern char c und int i" ist, und initialisiere "pStruct" mit 0 (NULL).
Ausgeschrieben (bis auf die Tatsache, dass der Name _anonymousStruct nicht existiert):
struct _anonymousStruct { char c; int i; }; struct _anonymousStruct * pStruct; pStruct = 0;
-
Danke für die schnelle und ausführliche Antwort!
Also pStruct wird die Adresse 0x0 zugewiesen?!
wenn ich allerdings mit
printf("%p",&ps);
die Adresse ausgeben lasse, bekomme ich nicht 00000000 sondern z.b. 0022FFFF. Das verstehe ich nicht ganz. Wieso ??
-
Benutzername200309 schrieb:
wenn ich allerdings mit
printf("%p",&ps);
die Adresse ausgeben lasse, bekomme ich nicht 00000000 sondern z.b. 0022FFFF. Das verstehe ich nicht ganz. Wieso ??
was du da ausgibst, ist die adresse der pointer-variablen, nicht das, worauf sie zeigt. lass einfach das & weg.
-
Danke!
Zum Verständnis:
struct { char c; int i } *pStruct = 3; /* Zeige auf 0x3 */ int *pInt = 3; /* Zeige auch auf 0x3 */ printf("pInt %p",pInt); /* Ausgabe: pInt 00000003 */ printf("pStruct %p",pStruct); /* Ausgabe: pStruct 00000003 */
Meine Frage hier. Zeigen pStruct und pInt auf die gleiche Adresse (00000003)?
Die Zuweisung*pInt = 2;
führt logischerweise zum Fehler. Was passiert hier genau ?
-
Benutzername200309 schrieb:
Meine Frage hier. Zeigen pStruct und pInt auf die gleiche Adresse (00000003)?
das tun sie.
Benutzername200309 schrieb:
Die Zuweisung
*pInt = 2;
führt logischerweise zum Fehler. Was passiert hier genau ?
da fehlt ein cast: int *pInt = (int*)2;
-
+fricky schrieb:
Benutzername200309 schrieb:
Die Zuweisung
*pInt = 2;
führt logischerweise zum Fehler. Was passiert hier genau ?
da fehlt ein cast: int *pInt = (int*)2;
ach so, falls ich dich falsch verstanden habe: bei *pint = 2; versuchst du eine 2 dahin zu schreiben, worauf 'pInt' zeigt. das kann zum absturz führen, falls sich an der adresse kein beschreibbarer speicher befindet (ist unter windoofs jedenfalls so).
-
gut, habe keine Fragen mehr danke!