On Monday 28 July 2003 18:53, volker wirth wrote:
Da hier ist mal wieder eine Einsteigerfrage, aber ich kriege es nicht auf die Reihe: Warum kann ich nicht ein char-Array deklarieren und spüäter mit einem String initialisieren? So funtioniert es:
char v[20]="text";
Das ist das gleiche wie char v[20] = { 't', 'e', 'x', 't', '\0' }; das läßt der Compiler nur zwecks Faulheit zu, weil es so schön praktisch ist. Das geht auch nur, weil im compilierten Code für initialisierte Daten sowieso ein Stück Bytes reserviert ist; da ist es auch schon egal, ob der Compiler lauter Nullen oder eben Deinen Text reinschreibt. Zur Laufzeit passiert damit nichts mehr - außer daß auch dieses Stück Deines Programms in den Speicher geladen bzw. gemappt wird.
so aber nicht:
char v[20]; v="text";
Hier müßte auch der Compiler selbständig eine Kopierfunktion aufrufen, die an
dieser Stelle noch nicht einmal definiert ist. Du mußt schon selber sagen,
was passieren soll - etwa "strcpy()".
Übrigens: Wenn Du sowieso nur den vordefinierten Text drinhaben willst, kannst
Du es auch dem Compiler überlassen, die Länge auszurechnen - also bei der
Deklaration einfach die "20" weglassen:
char v[] = "text";
Dann werden automatisch genau so viele Zeichen reserviert, wie bei der
Initialisierung angegeben - plus eines für das Nullbyte am Ende.
CU
--
Stefan Hundhammer