C语言易错点01字符串中的\0(冷门但又必须知道的事儿)

目录

字符串本身自动带\0吗?

接下来我们来验证\0的存在

为什么它冷门而我们又必须知道

像上一张图片初始化数组,我们不用开始就定义长度。但如果我们定义长度,不知道这个概念,会导致报错。

​编辑


字符串本身自动带\0吗?

首先 一个字符串例如“abcd”,其在存储空间里是有一个\0的,那我们先来看一下这个代码

按理来说,如果它包含有\0,不是应该输出5吗?那是说它没有\0吗?事实是:

不论输入多少的字符,输出的都是4。

sizeof(a) 返回的是指针 a 的大小,而不是字符串的长度。这里a 是一个指向字符串常量的指针,它在内存中只占据一个指针的大小,而不管字符串的长度是多少。

它输出的是指针的类型的大小。

结论是:这与字符串本身长度无关,字符串的\0还是存在的。

接下来我们来验证\0的存在

只要选择可以反映字符串的长度而非反映指针的

答案是:数组

于是类似地我们写了如下代码:

它输出了5,证明了我们字符串后面\0的存在

为什么它冷门而我们又必须知道

像上一张图片初始化数组,我们不用开始就定义长度。但如果我们定义长度,不知道这个概念,会导致报错。

写在最后:有点标题党了哈哈,但是求解过程很有意思哇,自学一些语法呢是可以用这样的探究方法的。

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值