wie viele Byte Speicherplatz belegt das Feld(C Programmsprache)?

3 Antworten

weil in C char-arrays immer als 0 terminierte zeichenketten gespeichert werden.  


TeeTier  03.12.2015, 00:02

Das stimmt so nicht! Siehe:

char feld[4] = {'a', 'b', 'c', 'd'};

Was du meinst, sind vermutlich String-Literale, oder? :)

1

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