[学习笔记]C和C++中关于字符串的细小知识点

分享了关于C-风的字符串的一些基础但容易被忽略的细节,包括字符串初始化、长度计算以及避免常见错误。文章指出正确使用双引号初始化字符串以包含结尾的空字符,并强调确保数组大小足以容纳字符串及其结束符。此外,文章还提醒读者在处理字符串长度时应注意sizeof运算符与strlen函数的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       这次和大家分享下C-风格的字符串的一些细小知识点,字符串很简单,大家经常用肯定都很熟悉,不过还是会有一些基础但是容易被忽略的一些细节,而且华为软件机试经常会有关于字符串的题,所以觉得有必要和大家分享一下自己的总结。

字符串初始化:


       C-风格的字符串具有一种特殊的性质,它必须以空字符结尾,即\0,其ASCII码为0,用来标记字符串的结尾,如:

char ming[9] = {'c','h','a','r','m','i','n','g','\0'};

       这个值得注意,C++的很多处理字符串的函数,包括cout,它们逐个处理字符串中的字符,直到到达空字符才停下。如果最后一个字符不是空字符,使用cout函数的话,将打印char数组内的9个字母,并接着将内存中随后各个字节解释为要打印的字符,直到遇到空字符为止,很可怕吧。
       我们也可以这样初始化字符串,使用双引号,而不是繁琐的单引号:

char ming[] = "charming";

       用双引号括起的字符串隐式地包括结尾的空字符,因此不用显示的包含它,很方便吧。

       我们初始化数组的时候应该确保数组足够大,能储存字符串的所有字符(包括空字符)。让数组比字符串长一些并没有坏处,顶多浪费一些空间而已。


       记住,不能以下面两种方式将字符常量赋给char型变量:

char shirt_size = 'S';
char shirt_size = "S";

       第一种可以成功赋值,但其将S的ASCII码的值,即83,赋给了shirt_size;

       第二种则不能成功赋值,因为“S”实际表示字符串所在的内存地址。


字符串长度:

char ming[15] = "charming";
int n = sizeof ming;    //n为整个数组的长度,n为15
int m = strlen(ming);    //m为字符串长度,m为8

       还是看这个字符串,我的上一篇博客讲过用sizeof运算符作用于数组时,返回整个数组的长度,在这里即15个字节;而strlen()函数返回的是储存在数组中的字符串长度,且仅计算可见的字符,并不把空字符也计算在内。因此m为8。如果bubble是字符串,则数组长度不能短于strlen(bubble)+1,这个很常用,一定要留心哦~


       先写这么多,吃饭去了,也祝各位吃好!奋斗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值