Hat dir diese Antwort geholfen?
Das Sternchen bedeutet, dass du einen Pointer ("Zeiger") hast. Der zeigt irgendwo auf eine Speicheradresse. Dort kann z.B. der Anfang eines Strings stehen. Das wäre dann ein char*. char x[123] reserviert Speicherplatz für 123 Zeichen. Dort kannst du einen String reinkopieren/reinschreiben. Wenn du nur einen Pointer anlegst, hast du aber noch keinen Speicherplatz. Du kannst da zwar u.U. was hinschreiben, was aber bedeutet, dass du Speicher nutzt, der dir nicht gehört (was irgendwie undefinierte Folgen hat).
char* wird z.B. für Parameter gerne genommen, weil dort eben dann nur der Pointer (meistens 4Byte) übergeben wird und nicht der ganze String (meistens Länge*1Byte). Der Pointer zeigt dann auf den Anfang des Strings. Das Ende ist bei Strings in C durch die 0 (oder '\0') erkennbar.
char text[100];
strcpy( text, "hallo Welt\n" );
// du kannst char[] einem char* zuweisen, zeigt dann auf den Anfang
char *ptr = text;
// Andersrum gehts nicht
char text2[100];
text2 = ptr; //Fehler
Du kannst also in C nie "soviel reinschreiben wie du willst" (jedenfalls wüsste ich nicht wie). Daher ist es auch wichtig, dass du aufpasst, dass du nicht über die Grenzen deines reservierten Speichers hinausschreibst (Der
Compiler prüft das nicht, das musst du selbst machen) und dass du am Ende deines Strings immer eine \0 hast, da sonst das Ende nicht gefunden wird und munter weiter gelesen/geschrieben wird (was wieder undefinierte Folgen hat). Aus diesem Grund gibt es von den meisten Funktionen auch zwei Varianten (z.B. strcpy() und strncpy()), wobei man bei der einen die Größe seines Buffers mit angeben kann, so dass man nie darüber hinaus schreibt. Man muss sich dann ggf. nur noch um die Nullterminierung kümmern...