In der C-Standardbibliothek werden Zeichenketten durch ein Array von Zeichen implementiert, das durch ein Nullzeichen abgeschlossen wird: ' \0 '. Solche ASCIZ-Zeichenketten führen zu Ineffizienz, weil wir jedes Mal, wenn wir die Länge einer Zeichenkette wissen müssen, diese iterieren müssen, um nach ' \0 '.
Dies kann umgangen werden, indem die Länge der Zeichenkette bei der Erstellung gespeichert wird, z. B. durch Verwendung einer Struktur wie folgt:
typedef struct cstring_ {
size_t nchars;
char chars[0];
} cstring;
Hat jemand eine freigegebene Bibliothek, die die string.h-Funktionen implementiert, aber mit einer Struktur anstelle von char *
Schnüre weitergeben?
Wenn nicht, gibt es einen bestimmten Grund, warum dies eine schlechte Idee wäre?