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

字符串的基本概念

"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垂直制表符
\dddddd表示1~3个八进制的数字 如 \130X
\xdddd表示2个十六进制数字 如\x30 0

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

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值