字符串
由双引号引起来的一串字符称为字符串,例如"hello world!"。
注:字符串的结束标志是\0,。在计算字符串长度时\0是结束标志,不作为字符串内容。
#include <stdio.h>
int main()
{
char arr[] = "hello";
return 0;
}
通过调试不难发现数组arr最后面是还有一个\0的,而这个\0并没有计入数组的长度内。
#include <stdio.h>
#include <string.h>//引用包含有strlen的头文件
int main()
{
char arr[] = "hello";
printf("%d ", strlen(arr));//strlen是计算长度的关键字
return 0;
}
这里出现了一个警告,我不太理解,请大家指正。
接下来再对比字符和字符串的差别
,通过调试发现arr2在最后是没有\0的
但是在打印arr1和arr2的时候可以看到这时候就出了一些问题,后面出现了一些乱码。
#include <stdio.h>
int main()
{
char arr1[] = "hello";
char arr2[] = { 'h', 'e', 'l', 'l', 'o' };
printf("%s ", arr1);
printf("%s ", arr2);
return 0;
}
为什么会出现这种情况,可以用一张图来理解一下
arr1和arr2都占用了数组空间中的位置,而arr1在o之后有\0终止,但是arr2没有,这时就会继续往后读取内存空间,但是后面的内存空间我们不知道储存了什么,这时候就会出现乱码的情况。
转义字符
\? | 在书写连续多个问号时使用,防止他们被解析成3字母词 |
\' | 用于表示字符常量‘ |
\" | 用于表示一个字符串内部的双引号 |
\\ | 用于表示一个反斜杠,防止它被解释为一个转义序列符 |
\a | 警告字符,蜂鸣 |
\b | 退格符 |
\f | 进纸符 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直指标符 |
\ddd | ddd表示1~3个八进制的数字,如:\130 X |
\xdd | dd表示2个十六进制的数字,如:\30 0 |