Pointer auf undefinierten Bereich...
-
D-U-D-E schrieb:
Willst du mir sagen, daß
char *t = 0; if (!t) t = "test";
standardkonform ist? Jetzt bin ich allerdings wirklich verwirrt.
Wo siehst du denn da ein Problem?
t wird mit Null initialisert, und verweist am Ende auf das Stringliteral "test".
-
Also wird das Literal "test" in den Speicher gelegt und t darauf umgebogen, richtig?
-
Das hat zwar nichts mit biegen zu tun, aber ja:
t
wird mitNULL
initialisert, und verweist am Ende auf das Stringliteral"test"
.cheers, Swordfish
-
Okay, soweit so gut
Aber wieso klappt das zum Beispiel nicht mit einem Integer?
-
D-U-D-E schrieb:
Okay, soweit so gut
Aber wieso klappt das zum Beispiel nicht mit einem Integer?
Was genau?
int a = 0; a = 12;
Klappt doch
Nochmal zum Hintergrund: "test" ist ein Zeichenkettenliteral in ReadOnly-Speicher des Programms. Du weist hier dem Zeiger zunächst den Wert 0 und dann den Wert "Adresse des Literals" zu. Bei dem Integer-Beispiel weist Du dem Integer zunächst den Wert 0 und dann den Wert 12 zu.
int *a = 0; *a = 12
Das ist eine völlig andere Situation. Du weist hier dem Zeiger zunächst den Wert 0 zu und dann dem, worauf er zeigt den Wert 12. Das ist undefiniert. Es wäre aber auch undefiniert wenn der Zeiger nicht den Wert 0 hätte.
-
Okay, Frage erledigt
Danke!