什么是字符串?一串字符,即用双引号括起来的一串字符
代码 (%s:打印字符串,%c\n:打印单个字符) 编译运行结果
as[]是一个字符数组,里面的元素是字符串“abc”,字符数组即为一组相同类型的元素;
注意的是:字符串在结尾的位置隐藏了一个\0的字符;\0是字符串的结束标志。
以上何以见得呢?
我们需要调出监视窗口,监视窗口只有在调试过程中才会发挥作用;所以首先,ctrl+F10进行调试,在菜单栏“调试”窗口中的“窗口”选项里选择监视,任选监视序号,在监视对象栏里输入所监视对象,回车即可(-针对于VS 2019软件-)
代码 监视窗口
可以看到,类型下显示的是char[4],而我们代码的字符串元素只有“abc”,从此处可以见得,字符串在结尾隐藏了\0字符。
但是!该字符串的长度并不等于字符串元素数
这时我们引入一个函数:strlen,即string length,strlen是用来计算字符串的长度的,在使用strlen时我们需要引入关于strlen函数的头文件,即#include<string.h>
代码 编译运行显示
由strlen计算出的字符数组as的长度为3,所以我们可以知道\0仅仅作为字符串的结束标志,是不计入字符串的长度大小的。
提问:char as[]=“abc”和char ass[]={‘a’,‘b’,‘c’}一样吗?
前者是是一个字符串构成的字符数组,后者是单个字符构成字符串再构成的字符数组
欲知是否一样,printf试试。
代码 监视窗口 编译运行结果
答案很显然易见,不一样
char ass[]={‘a’,‘b’,‘c’}是由三个字符构成的字符串再构成字符数组的,已经明确给予了三个字符,末尾并没有‘\0’,所以监视窗口显示为char[3],char ass在运行过程中没有遇到‘\0’这个结束标志字符,所以在运行abc之后并没有停下来,而是接着往下寻找\0,这个过程是随机的。
转义字符
什么是转义字符?转义了它原来的意思的字符就叫转义字符,如下:
代码 结果
在代码中编写“c:\test\test.c”,运行结果并不是c:\test\test.c,而是c: est est.c。
这是由于字符\t被转义成了空格
常见的转义字符有:
转义字符 | 转义为 | 注释 |
??) | ] | 在早期的编译器有出现这种情况,但是现在大部分编译器不支持 |
\' | ' | |
\" | " | |
\n | 换行符 | 换行 |
\a | 警告字符 | 发出蜂鸣 |
\b | 退格字符 | 向左删除一位 |
\f | 进纸符号 | |
\r | 回车符号 | |
\t | 水平制表符 | |
\v | 垂直制表符 | |
\ddd | 八进制数ddd转化为10进制数后对应的ASCII码值 | |
\xdd | 十六进制数dd转化为10进制数后对应的ASCII码值 |