您的位置:首页 > 其它

[SDS阅读理解/0]前言

2017-11-18 09:35 232 查看
SDS是一个很小的C字符处理库,目的是提供像C标准库
<string.h>
里头那些类似但又更加安全的一套字符操作API。源码链接https://github.com/antirez/sds

源文件主要就两个-sds.h/sds.c,内容不是很多,仔细看还是能看懂的。然后打算做个记录,将自己学习过程中觉得需要留意的知识点记下来。虽然网上一搜就一大堆源码分析,这里只是按自己的理解进行记录,通过整理知识点,加深印象。

C语言里头是没有字符串这一基本数据类型的,只有
char
这种储存单个字符的字符型数据类型,当然储存整数的整
int
long
等数据类型。为什么没有字符串类型?举个例子-“abcd”和”abcde”这两个字符串在内存中所占的字节数是不一样的,我们需要用两个变量来储存它们,当然,这两个变量的大小是必须要确定的,不然编译的时候就会报错。
char
只能存一个,所以我们不能定义两个
char
类型的变量来存这两个字符串。解决办法是定义一个字符型指针来指向一个储存字符串的地址,像这样
char* str = "abcd"
,还有就是定义一个字符数组,这样
char str[6] = "abcde"
注意数组下标大小。当我们已经知道某串字符的大小的时候,我们可以直接定义一个长度刚刚好的字符数组来储存它,但是有时候我们并不知道这串字符的大小,只能先声明一个尽可能大的变量,后面要用到时再把字符串放进去。这样就会有一个问题-该变量容量太小,无法完整容纳这串字符;太大,多出来的空间就浪费了。有时我们经常也会用到
char* str = (char*)malloc(size)
来分配内存,也是需要确定一个大小的。正是由于以上所说的每个字符串所占内存大小的不确定性,导致C标准库里头是不带字符串这种基础数据类型的。当我们要存一串字符的时候怎么办呢?自己看着办。

好吧,上面这一大段其实讲的都是些C语言的基础知识,是个人理解,可能有错误地方。这里并不是要讲基础,只是觉得去掉这一段后字数太少…就,就加上去啦:)

自己写一个字符串操作的库,效率肯定没那些经验丰富的大神写的高,所以还是先学习使用现成的轮子吧。在我们造蹩脚的轮子的时候,多看看别人的好轮子是如何造的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: