[SDS阅读理解/0]前言

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


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


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


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


       自己写一个字符串操作的库,效率肯定没那些经验丰富的大神写的高,所以还是先学习使用现成的轮子吧。在我们造蹩脚的轮子的时候,多看看别人的好轮子是如何造的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值