C语言 Day4
字符串
字符串即一串字符。单括号括起来的是字符,双括号括起来的就是字符串。
如何描述字符串
1 | int main() |
提前需要注意的是,字符串的结束标志是一个\0
的转义字符,在计算字符串长度的时候,\0
因为是结束的标志,因此不算做字符串的内容
证明字符串的内容都是字符 与 \0
算作元素
因为数组表示的是一组相同类型的元素,所以我们在这里可以选择使用字符数组来证明
首先将字符串存到字符数组中
1 | int main() |
按下F10
进行调试,之后再监视arr
根据右侧监视的结果我们发现有0~5,一共6个元素,是因为字符串在结尾隐藏了一个\0
\0
的重要性 与 \0
是字符串中止的证明
\0
的主要作用就是进行一个终止读取的作用及时折损
1 | int main() |
arr1是正常的但是arr2出现了乱码是为什么呢?
乱码
通过画图可以方便我们对内存空间进行理解,如下图所示
而出现乱码的原因就是,由于没有终止符号就会一直读取未知信息,产生乱码
如何解决呢?很简单可以在后面直接手动输入一个\0
1 | int main() |
这样就不会出现乱码了
现在已经知道了\0
会算作一个元素个数,那么怎么证明其不算作字符长度呢?
\0
不算作字符长度
证明之前还是来简单介绍一个新的函数,来辅助证明
strlen()
函数
strlen()
函数,全称是string length,它直接在()
内填写,可以求字符串的长度,但是求完长度后会直接返回
因此在使用这个函数的时候可以在前面打上int len
就可以解决
但是在使用这个函数是会有头文件报错,因此还需要在头文件上加上#include <string.h>
回到证明
1 | int main() |
结果显然是3,因此足以证明\0
会算作一个元素个数,但其不算作字符长度
拓展
如果要是输入字符会strlen()
函数会怎么样?来试验一下
1 | int main() |
结果如图,这个数字很奇怪,是为什么呢?
因为strlen()
在求算字符长度是,得出的结果是随机值,多按几次F5
就会发现每次的结果都是不一样的
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 qianbimo's blog!