Was bedeutet zero-terminated String?

05.04.2008

In C stößt man häufig auf den Begriff zero-terminated (oder 0 terminierter) String. Was aber steckt dahinter?

Betrachten wir zur Aufklärung folgendes Beispiel:

C - Code:
char *s = "Hallo Welt!";

Im Speicher wird der String folgendermaßen gespeichert.

\begin{tabular}{c|c|c|c|c|c|c|c|c|c|c|c|c|c}\hline\\<br />... & 'H' & 'a' & 'l' & 'l' & 'o' & ' ' & 'W' & 'e' & 'l' & 't' & '!' & 0 & ....<br />\\ \hline \end{tabular}

Zu sehen ist am Ende das 0-Zeichen, das der Zahl 0 (nicht dem Zeichen '0') entspricht. Dadurch wird das Ende eines C-Strings eindeutig markiert.

Es muss also nicht mehr zusätzlich die Länge des Strings gespeichert werden, allerdings entfällt die Möglichkeit das 0-Zeichen mitten im String zu speichern.

Für C++ Nutzer:
Die Klasse String speichert intern die Länge des Strings und kein Zusätzliches 0-Zeichen. Um aus einem Objekt der String Klasse einen C-String zu bekommen bietet die Klasse string die Funbktion c_str() an.

Maik81ftl

14.03.2011
Author: Maik81ftl

Un wie verhält sich das ganze bei Lazarus und Linux???

mfg Maik81ftl

Einen neuen Kommentar erstellen...