Grundlagen der Programmiersprache C

char s[10] = "hello";
printf("%zu %zu\n", strlen(s), sizeof s);

Welche Ausgabe erzeugt der obige Code mit einem char-Array, das eine Zeichenkette enthält, bei der Ausführung?

  1. A5 10
  2. B6 10
  3. C10 10
Antwort und Erläuterung anzeigen

Antwort: A. 5 10

Eine Zeichenkette in C ist eine Folge von Zeichen, an deren Ende das Abschlusszeichen '\0' steht. strlen zählt die Zeichen vom Anfang bis vor das '\0' und ergibt für "hello" daher 5. sizeof s ist die Größe des gesamten Arrays s, also die deklarierte Elementanzahl von 10 Byte (die übrigen Elemente enthalten 0). Lässt man die Elementanzahl weg, wie in char s[] = "hello";, entsteht ein Array von 6 Byte einschließlich '\0'.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Programmiersprache C

  1. Nach den obigen Deklarationen wird eine der Anweisungen A „p = t;“, B „*p = 'x';“, C „q = t;“ oder D „*q = 'x';“ geschrieben. Welche Kombination führt zu Kompilierfehlern?
  2. Welche Ausgabe erzeugt das obige Programm mit einem Array von Funktionszeigern bei der Ausführung?
  3. fill und use seien separat definierte Funktionen. Welches Problem hat die obige Funktion?
  4. Was trifft auf den Zeiger zu, den die obige Funktion make zurückgibt?
  5. Warum wird in C empfohlen, unmittelbar nach free(p); die Anweisung p = NULL; zu schreiben?