字符串
众所周知,char = 'a';这样搞只能创建一个字符,如果我们想要创建的有很多个字符,就需要字符串。
一下创建很多个东西,就理所当然用到数组嘛,数组顾名思义,就是存放一组数,里面放上字符,就是字符数组(如图)
当然如图所示创建数组的方式完全没有问题,可是为什么arr2打印出来的却是烫烫烫呢,真相就是
字符串的结束标志是\0,arr1中c后面有一个隐藏的\0printf在读完c后就终止了而arr2创建的方式却没有隐藏的\0printf会在读完c后继续在后面的空间中读取,直到读到\0停止
如图加上\0后就正常了
注:字符串的结束标志是一个
\0
的转义字符。在计算字符串长度的时候
\0
是结束标志,不算作字符串 内容。(如图字符串长度为3,\0并未被算进去)
转义字符(转义字符顾名思义就是转变意思)
转义字符一览
\?
在书写连续多个问号时使用,防止他们被解析成三字母词
\'
用于表示字符常量
'
\“
用于表示一个字符串内部的双引号
\\
用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a
警告字符,蜂鸣
\b
退格符
\f
进纸符
\n
换行
\r
回车
\t
水平制表符
\v
垂直制表符
\ddd
ddd表示1~3个八进制的数字。 如: \130 X
\xdd
dd表示2个十六进制数字。 如: \x30 0
\?
关于三字母词的解释在图中,至于为什么不演示因为现在编译器好多不支持三字母词没法演示
下面是\'到\a的解释,其他可根据释义自行尝试(我们着重讲解后两个)
int main()
{
char ch = '\'';//\’的作用就是让’单纯就是'
printf("%c",ch);
char ch2 = "ab\"c";//\"作用是让"单纯就是"
printf("%c", ch2);
printf("\\n");//\\作用就是防止被解释为转义序列
printf("\a");//转义为让系统发出蜂鸣声
return 0;
}
\ddd
ddd表示1~3个八进制的数字。 如: \130 X
为什么会打印出X呢?我们先放张图
有没有发现?没发现?
行告诉你吧 (130是八进制数字,转化为十进制后是不是88,88是不是x在ASCII表中对应的值)
好这样\xdd同理
\xdd
dd表示2个十六进制数字。 如: \x30 0
(看看16进制的63转化为十进制后的数值是不是字符c后面对应的数值呢)