用双引号(Double Quote)引起来的一串字符串字面值(String Literal),或者简称字符串。
例如:"boy" "123" "abc123" "51CTO" "51CTO博客"
字符串默认在结尾的位置隐藏了一个\0的字符,\0占用一个字符的位置,但并不会算在字符串的长度里。(比如:char arr[5]存储字符串的话,字符串中最多可以存放4个字符,需要留一个字符位置存放\0)
int main(){
char test[20] = "admin123";
printf("%s\n",test);
printf("%d\n",strlen(test));
return 0;
}
上面使用了string.h中提供的strlen函数来计算字符串的长度。
【注意】字符串的结束标志是一个\0的转义字符。在计算字符串长度的时候\0是结束标志,不算作字符串内容。
int main(){
char test[20] = "admin\0admin";
printf("%s\n",test);
printf("%d\n",strlen(test));
return 0;
}
通过图片可以看出,在字符串中遇到\0就会结束字符串。输出\0之前的字符串,输出\0之前字符串的长度。
当然,在字符串中包含\0的情况下,也可能不是结束的含义。例如:八进制。(转义字符八进制最多三位,包含0开头。转义字符的情况下可以不使用0开头)

上图中,\052被看成了一个字符,即输出的*字符。(具体参考ASCII码表)
不使用\0开头的八进制。

上图中,\152被看成了一个字符,即输出的j字符。
如果遇到\18这种情况,只需要将\1看作八进制,8作为一个字符计算和输出。

在字符串中表示八进制转义字符最少需要一位数字,最多三位数字。
举例:
\1
\2
\01
\001
\101
\512十六进制转义字符在字符串中最少需要一个数字,最多需要两位数字,且以\x开头。(十六进制的数字为:0~9,a,b,c,d,e,f)即表现形式可以为:
\x1
\x01
\x10
\xab
\xa1
\x1a当然,如果是自己写不推荐\x1这种写法,可以试着写成\x01,效果一样。










