String an Funktion übergeben - Zuverlässig, ohne Bugs?
-
Hallo,
char *myfunction(char *string) { /* Funktion wird ein Pointer übergeben! Funktion gibt einen Pointer zurück. */ } // Pointer blubb zeigt auf die Zeichenkette: "werwerwerwer wer" // ABER: Wo ist die Zeichenkette gespeichert? Wird intern eine Variable //angelegt? char *blubb = "werwerwerwer wer"; //foo ist eine Variable, der Pointer der Funktion schreibt Erg in foo?? char foo; foo = myfunction(blubb); /*Ich versteh das alles noch nicht ganz mit den Pointern. Im Forum hat man mir gesagt, dass es nur möglich ist einen Pointer anzulegen, um von einer Funktion einen String zurückzugeben. Ok, aber dann hat man mir gesagt, der Pointer zeigt ja im Prinzip nur auf das erste Byte des String. Woran erkennt der Pointer nun, dass der String zu Ende ist? Wahrscheinlich mittels dieses NULL-Bytes oder so ähnlich. Was ist aber wenn der String aus Nullen besteht? "0000" Die Null hat doch binär dieselbe Schreibweise wie das NULL-Byte!??!? 0 = 00000000; NULL= 00000000 mfg steppen */
-
Nö.
'0'= Zeichen 0, dezimal 48 (glaub ich)
'\0' = CString-Terminator, dezimal 0"0000" -> 48|48|48|48|0
-
StefanBa schrieb:
// Pointer blubb zeigt auf die Zeichenkette: "werwerwerwer wer" // ABER: Wo ist die Zeichenkette gespeichert? Wird intern eine Variable //angelegt? char *blubb = "werwerwerwer wer";
blubb zeigt auf das Zeichenkettenlteral "werwerwerwer wer", welches irgendwo statisch abgelegt ist, dh es existiert über die gesamte Lebenszeit des Programms. Da es nicht verändert werden darf, sollte blubb als const char* definiert werden.