为什么 C 不将字符串存储为字符的链表?

Why doesn't C store strings as a linked list of characters?

在 C 中,字符串存储为用“\0”消除的字符数组。所以我可以这样做:

char string[] = "Hello, World!";

char* string = "Hello, World!";

我只能使用预定义的字符串函数 [strcpy()] 来克服不能超过字符串初始化长度的事实。

我正在尝试制作一个对非常大的数字进行基本数学运算的程序。我想到了将这些数字存储在链表中。但也许我可以将它们存储在一个字符串 (char*) 中,并使函数直接对其进行操作。

在上述程序中使用链表对我有什么好处?

C 语言是在 n1570 或 etter 等标准中定义的。

由于历史原因,C 中的字符串在连续内存中表示。

并且在 2021 年,大多数处理器(x86-64、ARM、PowerPC ....)都可以有效地处理它们(使用优化编译器,比如最近的 GCC

当然,您可以开发将您的“字符串”类型表示为链表的 C 库。查看 Glib(GTK 的一部分),并研究其源代码以获得灵感。

UTF8 编码每个字符有几个字节 (char)(如 é

Prolog 的某些实现将字符串表示为链表。