Ich habe gerade angefangen zu lernen C nachdem ich bereits ein paar Jahre Erfahrung in Python, C# und Java hatte. Ich habe in einem Tutorial gelernt, dass char anything[]
immer ein Zeiger ist. (Heute hat mir jemand gesagt, das ist falsch) - Ich denke meine Frage hat etwas damit zu tun. Trotzdem versuche ich die Länge eines char-Array zu erhalten:chararray Größe und Länge sind nicht gleich
#include <stdio.h>
int get_string_length(char * string)
{
int length = 0;
while(string[length] != '\0')
{
char c = string[length];
length++;
}
return length;
}
int get_string_size(char * string)
{
return sizeof(string);
}
int main()
{
printf("%d\n", get_string_size("hello world")); // returns 8
printf("%d\n", get_string_length("hello world")); // returns 11
printf("%d\n", sizeof("hello world")); // returns 12 -> Okay, because of '\0'-char
return 0;
}
Ergebnis:
so , warum ist meine get_string_size
-Methode, die 8 anstatt o zurückgibt f 12? (Da beide nur Anruf sizeof()
)
'get_string_size (char *)' gibt 8 zurück, da das die Größe in Bytes eines Zeigers auf Ihrem Computer ist, Sie können 'strlen (char *)' verwenden, um das erwartete Ergebnis zu erhalten. – George
So viele Antworten in dieser kurzen Zeit - und auch ein Duplikat ... Ich glaube ich bin wirklich am Anfangspunkt von C ...: D Danke für alle Antworten ... Ich denke ich muss noch ein bisschen mehr lesen –