在阅读了Mr.Spolsky 的文章"Back to Basics"后,我考虑过C中的字符串结构,它将Pascal样式字符串(带有长度字节)和C中的经典ASCIIZ字符串的大部分优点融合在一起,并减少了它们的大多数缺点.主要的要求是使这个新字符串在机器命令中有效.(对于这个任务我假设,每个字符都是单字节.对不起.:))
我的想法是在这种结构的字节数组中存储字符串(也可以包含零字节):
我希望这种方法可以解决斯波尔斯基先生注意到的大多数问题,但是假设存在一些缺陷.我想知道你的意见.你怎么看待这件事?
到目前为止太复杂了.即使是非常简单的操作 - 在字符串的末尾附加单个字符 - 也需要执行以下步骤(假设可变字符串):
这不合理.只有一个像pascal一样的字符串,但是用一个字(32位整数)代替长度字节,并且整个字符串是字对齐的,这样更容易也更快.对于任何真正的字符串,最大尺寸的4GB限制几乎不重要.