Wie viele Byte belegt der gegebene String?

3 Antworten

Du kannst die Funktion strlen() aus <string.h> nutzen und für das abschließende Nullzeichen eine 1 dazu addieren:

const char * const str = "foo";
const size_t len = strlen(str) + 1;

Allerdings gibt es noch drei Dinge zu beachten:

  1. Erstens werden noch sizeof(char *) zusätzliche Byte für die Zeigervariable selbst benötigt, was auf 32-Bit Systemen meist 4 Byte und auf 64-Bit Systemen meistens 8 Byte sind.
  2. Wegen Alignment wird z. B. der String "Nudel" keine 6 oder 7, sondern eher 8 Byte einnehmen!
  3. Die Deklaration aus deiner Frage ist Falsch, da ein Stringliteral konstant ist und du deine Zeigervariable nur als "char *" deklarierst. Richtig wäre "const char *" oder alternativ als nicht konstantes Array "char[]".

Das war alles. :)

Das ist in der Tat implementierungsabhängig und kann nicht allgemeingültig gesagt werden.

In der Regel entspricht ein einzelner char einem Byte. Der String ist mit einem zustäzlichen Nullbyte terminiert. Ob die Adresse des Strings (char *) mit zur Storage-Größe gezählt werden soll, ist unklar.

Jedes zeichen = 1 Byte + 1 Impliziter Stringterminator

Das ist ein super cooler Text! hat 32 Byte.

Wozu musst du das genau wissen?


Fr4gdichschlau 
Fragesteller
 23.02.2018, 12:55

Das ist aus einer Uniklausur Grundzüge der Informatik: Programmieren in C und eine kurze Aufgabe die immer drankommt.

0