wie viele Byte Speicherplatz belegt das Feld(C Programmsprache)?
Hallo warum belegt das Feld in Speicherplatz hier 5 Byte ?? soll sie nicht 4 sein ??
char feld_1[]={"abcd"};
3 Antworten
weil in C char-arrays immer als 0 terminierte zeichenketten gespeichert werden.
Das stimmt so nicht! Siehe:
char feld[4] = {'a', 'b', 'c', 'd'};
Was du meinst, sind vermutlich String-Literale, oder? :)
Ein sog. String-Literal enthält immer implizit ein NUL-Zeichen am Ende:
"abcd" /* 'a', 'b', 'c', 'd', '\0' */
Du kannst aber Folgendes machen (abhängig von der C-Version und den Compiler-Einstellungen):
char feld[4] = "abcd"; /* 'a', 'b', 'c', 'd' */
Entgegen der anderen Antworten kannst du in einem char Array alles mögliche Speichern; es ist nicht nur auf sog. C-Strings begrenzt, die Nullterminiert sein müssen:
char feld[4] = {1, 2}; /* 1, 2, 0, 0 */
Ein leerer String ist also:
char *str = ""; /* '\0' */
... ein "Array" der Länge 1, welches ausschließlich das NUL-Zeichen enthält.
Viel Spaß damit! :)
hi! soweit ich weiß wird bei einem array mit der länge n bei dem index n+1 ein "\0" eingefügt. das wird bei allen strings in einem array so gemacht. bei integern,double etc soweit ich das weiß wird das nicht gemacht...
siehe auch: http://www2.informatik.uni-halle.de/lehre/c/c_array.html