c语言基础之字符串+转义字符

Kande ·
更新时间:2024-09-21
· 869 次阅读

字符串的基本概念

"hello,world!"
像这种由双引号引起来的一串字符称为字符串字面值,简称字符串。

'a' C语言中用单引号引起来的叫做字符 "a" 用双引号括起来的叫做字符串

注意:

C语言是不提供字符串类型的 ,但是它有字符串。c++或者Java是提供字符串类型的。 字符串的结束标志是\0的转义字符。在计算字符串空间长度的时候,\0作为结束标志,不算作字符串内容。

例如:

这时候我们发现空字符串的空间长度为1,原因是系统默认\0作为字符串的结束标志,不算作字符串内容,此时字符串的空间长度为1。

论\0的重要性

我们用一段代码来解释说明
在这里插入图片描述

在数组arr1[ ]中,我们用字符串形式向数组中去添加内容,(系统默认存在\0)一般数组在编译器编译时会默认去开辟数组空间,这时也就开辟了\0的空间; 在数组arr2[ ]中,我们将5个字符依次放入arr2的数组中去,并没有去添加\0,当编译器把5个字符都输出后,在没有遇到\0的情况下,则将继续向后读取空间,直到遇到\0; 在数组arr3[ ]中,我们将\0也放入了arr3的数组中,在编译器将5个字符输出时,编译器遇到\0就停了下来。 转义字符

在C语言中,我们通常使用 \ 来表示转义。
首先,我们来看一小段代码:
在这里插入图片描述
在这里我们可以看到,第一个\未转义成功,而第二个\转义成功同时t也随之消失,这是为什么呢?

以下是常见的转义字符

转义字符 释义
\? 在书写连续多个问号时使用,防止他们被解析为三字母词
\’ 用于表示字符常量‘
\" 用于表示一个字符串内部的双引号
\\ 用于表示一个反斜杠,防止它被解释为一个转义序列符
\a 警告字符,蜂鸣
\b 退格符
\f 进制符
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\ddd ddd表示1~3个八进制的数字 如 \130X
\xdd dd表示2个十六进制数字 如\x30 0

当我们试着求\n的大小时,就会发现\n在这里的空间长度为2

在这里插入图片描述
要特别注意:这里大小为2不是 \ 和 n各为1,而是\n和\0各为1。
因为在双引号里为字符串,而系统默认字符串的结束标志\0,也占有一个长度。

我们有时还会遇到这样一个情况:
在这里插入图片描述
这是因为strlen求出来的是字符串的内容长度,不包括\0,而sizeof所求出来的则是字符串的空间长度,包括\0。

最后我们来看一到面试题:求字符串的内容长度

#include int main() { printf("%d\n",strlen("abcdef"));//32被解析成一个转义字符 printf("%d\n",strlen("c:\test\328\test.c")); return 0; }

在这里插入图片描述在这里\是用来转义的,第二行中\t代表一个内容长度,那么\32是我们的一个八进制数字,在转义的时候将作为一个内容长度。


作者:鹿佳weirdo



C语言基础 字符串 转义 C语言 字符

需要 登录 后方可回复, 如果你还没有账号请 注册新账号