码迷,mamicode.com
首页 > 其他好文 > 详细

串在内存中如何存储?

时间:2014-09-19 15:17:25      阅读:453      评论:0      收藏:0      [点我收藏+]

标签:http   ar   数据   div   sp   问题   on   c   ad   

串的顺序存储结构是用一组地址连续的存储单元来存储串中的字符序列的。按照预定义的大小,为每个定义的串变量分配一个固定长度的存储区。一般是用定长数组来定义。

既然是定长数组,就存在一个预定义的最大串长度,一般可以将实际的串长度值保存在数组的0下标位置,有的书中也会定义存储在数组的最后一个下标位置。

  •  
    但也有些编程语言不想这么干,觉得存个数字占个空间麻烦。它规定在串值后面加一个不计入串长度的结束标记字符,比如“\o”来表示串值的终结,这个时候,你要想知道此时的串长度,就需要遍历计算一下才知道了,其实这还是需要占用一个空间。豪享博娱乐城
 

刚才讲的的顺序存储方式其实是有问题的,因为字符串的操作,比如两串的连接Concat、新串的插入Strlnsert、以及字符串的替换Replace,都有可能使得串序列的长度超过了数组的长度MaxSize。

  •  
    也就是说,串的顺序存储结构的缺点是字符串的截断,截断就是超过预定义长度的串值被舍去。

于是对于串的顺序存储,有一些变化,串值的存储空间可在程序执行过程中动态分配而得。比如在计算机中存在一个自由存储区,叫做“堆”。这个堆可由C语言的动态分配函数malloc()和free()来管理。

接下来我们试着按照串ADT定义的操作,来实现串这个数据结构。

串在内存中如何存储?

标签:http   ar   数据   div   sp   问题   on   c   ad   

原文地址:http://www.cnblogs.com/laoyangman/p/3981430.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!