字符串👏
刚看到字符串时,我的第一印象就是一串字符,结果证明我是对的。
就像"hello bit .\n",这种由双引号引起的一串字符叫做字符串字面值,就是字符串。但其中还有一些微妙的东西我不曾知道。当我运行一个字符数组时,断点调试打开监视,发现了传说中“看不见的\0”, 即\0是字符串的结束标志,在结尾位置隐藏了一个\0的字符,如下:
再求一下字符串的长度,用strlen函数计算"hello bit"长度,不难发现长度为9,说明咱的\0只是一个标志,不参与长度计算。strlen函数使用时记得引用<string.h>头文件,我是在这个报错这里卡了一下。
接下来又设置了两个字符串组做对比,证明\0的存在,我在arr3中撇开了\0因此打印时未遇到结束标志,内存中自动生成了乱码(随机值)以填补空缺。
转义字符👏
看看转义字符,就是转变了原来的意思,比如我输入一段字符“c:\ test \ test.c”,将它打印出来,发现不会输出一模一样的文本。
这里的\t不再是一个\字符和一个t字符的组合,他就是一个转义字符了——水平制表。其实还有更有意思的三字母词,“ ??)”会被解析成 " ] ",vs2019不支持这种三字母词于是无法打印。那如果我就想完整打印开始的c:\code\test.c\n呢?可以直接在\test前加上\即可。
那我单独打印一个字符a时这种情况可以执行,那我想打印" ’ “时呢?三个单引号存在时就不是一对单引号里的单引号了而是前面一对单引号+一个单引号。还是用咱”"解决就行。
还有其他的类似\ddd的,由1~3个8进制数组成,比如打印130,结果应该是转变成十进制都88但实际结果是X,这里我们就要引入ASCLL码值;如下(附转义字符表)