Frage von Kirra1, 30

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"};

Antwort
von TeeTier, 26

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! :)

Antwort
von arz0c, 30

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

Antwort
von ThomasAral, 26

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

Kommentar von TeeTier ,

Das stimmt so nicht! Siehe:

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

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

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten