mal wieder ne n00b frage - Zeiger
-
Hi,
noch ne Frage:#include <stdio.h> int main () { char* lol= "Test"; printf("%c",lol[0]); // Hier wird auch "T" ausgegeben return 0; }
Aber warum kann ich dann nicht mit folgendem Code:
int i = 0; while (lol[i] != "") { i++; } printf("%i",i);
die Länge des Strings bestimmen
auf die der Zeiger zeigt? Sollte ich die
Länge einfach in einer Variabel mitübergeben oder
wie?
Und ist es ok sizeof() auf ein char test[] anzuwenden
oder gibt es andere Möglichkeiten um deren Länge
zu bestimmen?Hoffe ich nerv euch nicht zu sehr
MfG Jonas
-
Strings sind 0- Terminiert.
sizeof() liefert Dir die Größe des Pointers zurück, nicht des Strings, auf den er zeigt.
-
War ja auch die Frage wie man denn statt dessen die Länge eines Strings bestimmen
kann auf den ein Pointer zeigt?
-
size_t i = 0; while (lol[i] != '\0') { i++; } printf("%i", i);
-
talas schrieb:
War ja auch die Frage wie man denn statt dessen die Länge eines Strings bestimmen
kann auf den ein Pointer zeigt?wenn du's, wie rüdi, nicht selber programmieren willst, dann damit: http://www.cplusplus.com/reference/clibrary/cstring/strlen.html
-
Ok, danke schonmal!
Aber 2 Fragen sind noch geblieben:1.) Was ist dieses `size_t` ?
2.) Warum macht es so einen großen Unterschied ob man
a) "" benutzt oder
b) '' benutzt ?MfG Jonas
-
^^size_t ist ein vorzeichenloser, grosser integer-typ. 'unsigned long' oder sowas.
"" ist eine stringkonstante (in dem fall einfach nur eine 0).
beispielchar *a = ""; // zeigt auf 0 oder '\0' char *b = "doof"; // zeigt auf 'd','o','o','f',0
zwischen zwei ' kommen einzelne zeichenkonstanten, z.b. 'a' für den ascii-code eines kleinen a (die dann als 'int' interpretiert werden), aber keine strings.
-
Ok danke !
Jetzt hab ich es verstanden!MfG Jonas