数据结构(七)——(字符)串

串,即是字符串(String),,同样是特殊的线性表。是由n多个char类型组成的。不过,String在c语言里,不是作为关键字的(即是,没有这个类型)只有像Java,才有将String作为一个数据结构。c中,一般使用char * 作为String的形式。不过,这只是String的一种存储结构的体现。下面详述。

串到的长度是按切切实实存在的char型来算的,‘\n’在这里不算入长度(但是应该还是会占据空间)。仅含有空格字符的串称为空格串(Blank String),为表示清楚,书写时用‘Φ’来替换,但是实际写代码时,还是使用空格的哈。

串的主要运算,就是以下了:
(因为这一节比较简单,如果做链式结构的String的话,就是代码相当于之前的链表那一节,所以不写代码了)
StriAssign() 串的赋值
StrConcat() 串的串接,又称并置
StrLen() 求串长
StrSub() 求在串里截取子串
StrIndex() 求子串在主串中序号
StrEqual() 判断两个串的内容是否相同
StrReplace() 置换运算
StrCmp() 两串的比较
StrEmpty() 判断串是否为空
(这些函数,有一些是函数库/头文件有现成的函数可以使用了,需要使用的话,先去一下相应的头文件)

串的存储结构:
串有三种存储形式:
定长顺序存储结构:就是char string[12] = {‘a’,‘b’,‘c’}这一种类型的。
堆分配存储结构:仍然是像定长一样,用一组连续的存储单元来一次存储串的字符序列。但串的存储空间是在程序运行时根据串的实际长度来动态分配的,可以算是动态分配。。即char * string = “abcde”
块链存储结构:即是链式存储,不过每个结点不一定只存一个char。,可以设置一个定长,存多个。

不过放下c语言的String的一些测试吧:
(之前考c,总是很混乱。不过理解原理,基本就可以记住)

#include<stdio.h>

int main()
{
	//初始化字符串 
    char *  StringArray1 = "dafg3afag";
	char * StringArray2 = "scanfzzzzzzh";
	
	//打印整个字符串 
	printf("string1 = %s,string2 =  %s\n",StringArray1,StringArray2);
	//打印字符串长度 
	printf("length 1 = %d,length 2 = %d\n",strlen(StringArray1),strlen(StringArray2));
	//打印字符指针指向的那个字符的存储大小 
	printf("sizeof char 1 is %d,sizeof char 2 is %d\n",sizeof(* StringArray1),sizeof(* StringArray2));
	//打印字符指针的存储大小 
	printf("pointer 1 = %d,pointer 2 = %d\n",sizeof(StringArray1),sizeof(StringArray2));
	//单个打印string里的其他位置的元素 
	printf("StringArray1[2] = %c,StringArray2[2] = %c\n",StringArray1[2],StringArray2[2]);
	//另外一个方式,打印其他位置的元素 
	printf("*(StringArray1+8) = %c,*(StringArray2+8) = %c\n",*(StringArray1+8),*(StringArray2+8));
	
	//从其他位置,打印字符串到结束 
	printf("StringArray1+1 = %s,StringArray2+1 = %s\n",StringArray1+1,StringArray2+1);
	//这种方式是不可行的 
	//printf("%s,%s\n",StringArray1[1],StringArray2[1]);
	
	return 0;
	
} 

附图:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值