串的变长分配存储,赋值的顺序操作为什么要先free

1.1 串的定义 串是由零个或者多个字苻组成的有限序列

(串的逻辑结构与线性表类似,串是限定了元素为字符的线性表从操作集上讲,串和线性表有很大的区别线性表嘚操作主要针对表内的某一元素,而串操作主要针对串内的一个子串)

(1)定长顺序存储表示,额外定义一个变量专门来存储串长求串长变成时间复杂度O(1)的操作。

(2)变长分配存储表示(又叫动态分配存储表示)的特点是在程序执行过程中根据需要动态分配。

char *ch; //指向动態分配存储区首地址的字符指针

变长分配存储表示方法在使用时需要malloc()来分配一个长度为length、类型为char型的空间,分配的空间可以用函数free()释放掉变长分配存储表示方法有顺序存储结构的有点,串长可根据需要来设定更加灵活,因此在串处理的应用程序中更为常用

1.3 串的基本操作 下面介绍几种串的原子操作,这些操作是构成串其他复杂操作的基石

(1)赋值的顺序操作 因为串是一个数组,所以直接用“=”不行

//取len + 1是为了多分配一个空间存放“\n”字符

//之所以用 “<=”是为了将ch最后的‘\n’复制到新串作为结束标记

(3)串比较操作 串比较操作是串排序應用中的核心。

将两个串首尾相接合并成一个字符串的操作称为串连接操作。

//注意之所以用“\n”是为了连同str2.ch最后的‘\0’一起复制。

2.1 简單模式匹配算法

i = ++k; //匹配失败i从主串的下一个位置开始,k中记录了上一次的起始位置


我要回帖

更多关于 赋值 的文章

 

随机推荐