[SDS阅读理解/0]前言
2017-11-18 09:35
232 查看
SDS是一个很小的C字符处理库,目的是提供像C标准库
源文件主要就两个-sds.h/sds.c,内容不是很多,仔细看还是能看懂的。然后打算做个记录,将自己学习过程中觉得需要留意的知识点记下来。虽然网上一搜就一大堆源码分析,这里只是按自己的理解进行记录,通过整理知识点,加深印象。
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语言的基础知识,是个人理解,可能有错误地方。这里并不是要讲基础,只是觉得去掉这一段后字数太少…就,就加上去啦:)
自己写一个字符串操作的库,效率肯定没那些经验丰富的大神写的高,所以还是先学习使用现成的轮子吧。在我们造蹩脚的轮子的时候,多看看别人的好轮子是如何造的。
相关文章推荐
- [SDS阅读理解/9]源码中的函数/6
- [SDS阅读理解/5]源码中的函数/2
- 我所理解的RxJava——上手其实很简单(一) 144 作者 Weavey 关注 2016.08.27 03:30* 字数 2789 阅读 45458评论 60喜欢 289 前言 相信各位看官对R
- [SDS阅读理解/7]源码中的函数/4
- [SDS阅读理解/2]源码中的数据结构
- [SDS阅读理解/8]源码中的函数/5
- [SDS阅读理解/6]源码中的函数/3
- [SDS阅读理解/1]源码中的宏
- 阅读《C primer plus》 理解C中二维数组、数组指针
- ImageNet Classification with Deep Convolutional Neural Networks 阅读理解及问题
- Redis源码阅读笔记(1)-- 动态字符串sds
- [Redis源码阅读]sds字符串实现
- python中的深拷贝和浅拷贝理解 分类: python基础学习 2014-03-10 15:50 292人阅读 评论(0) 收藏
- 一线架构师实践指南阅读体会_ADMEMS方法体系理解
- 第九周实践-阅读程序写出程序运行结果并理解(2)
- 《理解 ES6》阅读整理:函数(Functions)(八)Tail Call Optimization
- FutureTask源码阅读与理解
- 阅读 理解 思考 - Learning to Segment Object Candidates
- 如何阅读深入理解计算机系统
- 关于qt的信号槽机制的理解 分类: QT学习记录 2011-09-23 11:22 1872人阅读 评论(1) 收藏