C/C++中“\0”的作用

一、“\0”是什么

1.“\0”是一个转义字符

在C语言中,转义字符是一种特殊的字符序列,用于表示那些在字符串中无法直接表示的字符。转义字符通常以反斜杠(\)开始,后跟一个或多个字符,用于改变这些字符的原有意义,赋予它们特殊的控制功能。

2.常见的转义字符

  • \0:空字符,用作字符串的结束标志。

  • \a:响铃,执行时会发出警告音。

  • \b:退格,将光标向左移动一个位置。

  • \t:水平制表符,用于在文本中创建对齐的列。

  • \n:换行符,使光标移动到下一行的开头。

  • \v:垂直制表符,用于在文本中创建对齐的行。

  • \f:换页符,用于将打印位置移动到下一页的开头。

  • \r:回车符,将光标移动到当前行的开头。

  • **:反斜杠,用于在字符串中表示反斜杠字符。

  • ':单引号,用于在字符或字符串中表示单引号。

  • ":双引号,用于在字符串中表示双引号。

  • ?:问号,用于防止连续的问号被解释为三字符序列。

  • \ddd:八进制转义字符,其中ddd代表1到3位的八进制数。

  • \xhh:十六进制转义字符,其中hh代表1到2位的十六进制数。

二、“\0”的作用

在C语言中,\0是一个非常重要的字符,它被用作字符串的终止符。这意味着当C语言的字符串函数(如printfstrcpy)在处理字符串时,一旦遇到\0字符,就会停止读取更多的字符。这是因为\0的ASCII码值为0,它在内存中的表示形式是八个连续的0(00000000),这与数字0在内存中的表示(也是八个连续的0)是一样的。

三、实例

1.这里用VS2022社区版来演示

可以发现arr2中自动加入了“\0”

我们再来分别打印arr1和arr2中的内容来看看二者的差异

2.为什么arr1中会出现乱码呢?

可以发现arr1的末尾没有加上“\0”,而数组输出结束的标志是“\0”,所以他一直往后找,直到找到“\0”才停止下来,这会造成数组越界,会访问到内存中未知的内容,这会使得程序不安全,所以要及时加上“\0”。

从arr2中也可以看出来,arr2在赋值时最多给四个,但是根据前面的定义可知可以放五个,那为什么放五个会报错呢?

从监视中可以看出来:在arr2的最后面隐藏了一个“\0”。

3.注意事项

所以我们在以后写代码时一定要注意是否有“\0”,不然可能会造成数组越界!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值