目录
0.字符串
字符:字符指类字形单位或符号,包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号(''单引号里面的)
字符串:将多个字符存放在一起(""双引号里面的)
注意:编程中的符号都是英文符号
在C语言中是没有字符串这种特指的类型的,在C语言中双引号引起来的就是字符串("abc")。C语言中,字符串存在字符数组里面。
数组:相同类型的元素集合
这个代码的意思是将abc存放在数组里面,[]表明arr1是个数组,数组名字叫arr1,数组每个元素的类型是char。
1.字符和字符串的比较
上面两种存放方式,都是将a、b、c三个字符存放到数组里面。区别在于,数组里面真正存放的其他元素不一样。
第一个因为是常量字符串形式,也就是说存放的字符就是abc,不能变了。而字符串以'\0'作为字符串的结束标志,也就是说arr1真正存放的是a、b、c、\0
第二个里面存放的虽然也是字符串,但是是单个存放进去的,后面也没有结束标志。那么,计算机怎么知道你有没有存完呢,一开始也没有指定数组大小啊。所以,第二种是有问题的。
所以第二组打印的时候,会接着后面打印,知道计算机找到一个\0作为字符串的结束标志才会停止
所以在计算arr1和arr2数组长度的时候,前一个的长度是3,后一个长度是随机值
strlen是求字符串长度(string length):遇到结束标志\0停止,需要头文件string
那么怎么做才能让数组arr2正确存储a、b、c呢?只需要将最后添加一个\0即可。
2.字符串在内存的存储
由于计算机只能认识1、0,那么这么多复杂的字符计算机是怎么存储的呢?
计算机是通过ASCII将键盘上输入的字符存到内存中的,比如说:字符0规定的ASCII码是48,那么计算机就将48认为是0。
那么我们可以得到一个结论,在某种条件下,字符0就等于48
ASCII码:用1Byte表示,也就是8个比特位。因为美国的字符少,所以只使用了低7位,最高位没有使用。所以标准ASCII码的有效范围是0-127(0000 0000 ------0111 1111)
那么找到\0的位置,发现对应的是0,那我们也可以通过用0作为数组arr2的结束标志。
注意:这里不能输入'0',因为单引号引起来的是字符,计算机会认为它对应ASCII码的是48,而不是结束标志0
常见:’A‘------65(41H),'a'------97(61H),'0'------48(30H)
3.转义字符
C语言中的\表示转义字符,意思是将原来的意思转变。
比如想要输出一个',不能直接printf("%c\n",''');这个代码是错的,因为C语言会自动将前两个引号做匹配,那么第三个就多出来了,所以就会判错。只要将第二个'改变本来引号的意思,就ok了
常见:\a 蜂鸣 \t 制表符 \n 换行
\ddd(d是三个八进制数):意思是将三个八进制数------>十进制-------->ASCII码
\xdd(d是两个十六进制数):意思是将两个十六进制数------>十进制-------->ASCII码
4.打印ASCII码
5.注释
注释两个用处,第一是删除掉暂时不用的代码,第二是为代码添加注释