初识C语言字符串

文章介绍了C语言中字符串的概念,强调字符串以作为结束标志,并通过实例展示了如何通过监视器观察字符串内存布局。通过打印及strlen()函数计算字符串长度,揭示了未初始化的字符数组可能带来的不确定性。总结指出,仅表示字符串结束,不计入长度。
摘要由CSDN通过智能技术生成
字符串是C语言中最有用且最重要的数据类型之一,现在我们就来简单的认识一下什么是字符串。
字符串就是:双引号引起来的这一串字符就叫字符串字面值,或者简称字符串。这个还是比较好理解的。在程序中它是这样的:它还是比较好理解的。
但是需要我们注意的是:字符串是以 '\0' 作为结束标志的。下面我们主要来深入理解一下结束标志 '\0'
首先编写最简单的一段代码来调试:
然后进行调试,用窗口监视器来看。在Visual Studio中可按下F10,进行调试:
然后执行完语句(可继续按下F10),然后打开监视器:
这里我们就发现问题了:我在数组中存了9个元素"yisenWang",但是数组长度为10,内有10个元素。这就是字符串需要注意的一点:字符串结束的标志是"\0".在监视窗口我们也可以清楚的看到第十个元素为"\0"。

接下来我们就看看更有意思的:计算字符串的打印,这更能证明字符串的结束标志是"\0"。
字符串的打印用到转义字符"%s"。
先写简单程序打印字符串"hello"和"'h','e','l','l','o'" .
我们看结果很令人意外:
第二段字符串打印出来什么"烫烫烫啥的",看的我还觉得有点搞笑.但仔细想想为什么会出现这样的情况呢?
原因其实是非常的简单的,因为字符串arr1在hello后立即就有结束标志"\0",而字符串arr2后面是未定的,我们不知道它后面的空间里是什么,直到它遇到"\0"时结束标志.
依然通过监视器来看,是可以看到arr1的结束标志"\0",但arr2并没有结束标志。
接下来我们计算一下字符串长度,其实结果可以通过打印的结果想得到的。计算字符串长度我们需要使用函数strlen(),它就是string length,用这个函数就可以求的字符串的长度。这时我们依然计算" 'h','e','l','l','o' " 和"hello"的长度,有趣的事情就会出现,让我们来看看:
还是先编写简单的程序:
仔细一点其实会发现,聪明的编译器已经给我们提示了一个warning:
对于警告结果,我们暂且先搁置一下,继续学下去自然就会明白,这里就先不多说了。
如果对上面的打印结果已经非常明白的话,其实这个长度的结果我们就能想的明白。很明显arr1的长度为5,而arr2的长度是随机的,至少不是5,当然我想应该也存在为5的几率吧,这里还请明白的大佬指点一二,我们先来看运行结果:
运行结果就和我们想的一样,为什么会这样呢?其原因就是和打印的那个原因是一样的。这里就在重复一遍:因为字符串arr1在hello后立即就有结束标志"\0",而字符串arr2后面是未定的,我们不知道它后面的空间里是什么,直到它遇到"\0"时结束标志。就说明字符串arr2的第22个元素是"\0"的结束标志。
最后我们再通过一段程序来说明一个问题:
它的运行结果为:
简单分析一下:从结果来看,arr1和arr3的运行结果是一致的,是因为我们主动在arr3后面添加结束标识符"\0"。而arr2就不一样,它就是创建后去寻找后面未知的空间中的结束标识符"\0",所以得出重要结论:

结束标志“\0”,它只是代表字符串结束的标志,算长度时不算在内。

至此,相信你已经对字符串有了一定的认识,接下来我们在慢慢去发掘研究它。

今天是2023年1月1日,是新年的第一天,祝各位新年快乐,万事如意!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值