数据结构(7):字符串

成元 / 2026-08-30 / 约 413 字 / 预计阅读 1 分钟 < 教程, 笔记 >[ Data Structure ]

前言

字符串顾名思义,就是一串字符,常用于保存和处理文本,比如用户输入、日志和界面上显示的信息。

几乎每种主流编程语言都有处理字符串的方式,比如我们常见的 C 语言。

实现

对于连续存储的变长字符串,主要有两种组织方式。

显式记录长度

struct string {
    char *buffer;
    size_t len;
};

可以看到字符存放于 buffer 缓冲区中,同时用 len 表示这一个字符串的长度。

以空字符结尾

// 以结束符结尾
char *string;

这种组织方式只有一个 buffer,没有长度字段,一般强行规定字符串要以某个特定的结束符结尾。

如果要获取长度,就需要从头到尾扫描,记录结束符前面有几个字符。

结语

熟悉 C 语言的读者肯定发现了,C 语言的标准字符串正是采用了第二种。

这是因为 ANSI C 标准化发生在 20 世纪 80 年代,而以 ‘\0’ 结尾的字符串早已广泛存在于各种主流库中。而且当时的设计理念也和现在不同,当时认为只用指针管理更加简洁,还可以少传递一个长度参数等。

不过当今大多数语言都使用了第一种方式来组织字符串。我认识的大多数人自己造轮子时也更喜欢处理这种字符串。