C语言:渣女\0与被它区别对待的兄弟俩字符串与字符

虽然这个拟人手法用的挺那啥,但是我觉得还挺贴切的。

你觉得呢?

欢迎浏览后发表自己的看法!

目录

一、字符

(一)概念

(二)实际操作

二、字符串      

(一)概念

(二)实际操作

三、\0对字符串特殊照顾,但对字符就不太行了

四、小结


一、字符

(一)概念

        其实字符理解起来超级简单,就是在键盘上能打出来的a,q,@,#,等等。这些符号都被称为字符

(二)实际操作

        C语言中字符是用单括号括起来的,如:'a','b','@'。字符数组里单引号括起来的,也是字符。(字符数组,可以参考图a中的arr1)

        单个字符的打印可以使用%c来指定格式

二、字符串      

(一)概念

        使用双引号括起来的⼀串字符就被称为字符串,如:"abcdef",这就是一个字符串。

(二)实际操作

        1.字符串的打印格式可以使用%s来指定,也可以直接打印:

        

        2.C语言中也可以把一个字符串放在一个字符数组中,就像这样:

        但是,一旦进行开始调试,能打印在屏幕上的,除了我们想要的abcd,还有一些随机值。

(如下图所示)

       

         为什么还会有一些随机值呢?还请继续往下看。

三、\0对字符串特殊照顾,但对字符就不太行了

        字符串的末尾会隐藏着一个\0字符。这个\0字符呢,则是字符串的结束标志

        什么叫做字符串的结束标志

        请看一下面的解释:

        对于字符串"abcd",我们看到的是四个字符:a,b,c,d。但实际上末尾还隐藏着一个\0的转义字符。

在使用库函数printf()打印字符串"abcd"时,一遇到\0打印就会停止,所以屏幕上只会打印出abcd。

可惜,\0对字符串特殊照顾,但对字符就不太行了

       

    接下来我用图a和图b说话。这里加入字符串作为对照组:

图a

 图b

        大家可以从图a和图b中看出,arr1字符数组在打印abc的时候,还打印了一些随机值,这是因为arr1字符数组在末尾的地方没有\0作为结束标志,因此在打印到c时还在继续打印,直到碰到不知道藏在哪里的\0。

        arr2字符串的打印就是完全正常的,这是因为数组中有\0作为技术标志,打印可以正常停止。

        

看得出来\0对字符串和字符进行的区别对待了吗?

然后我又有个疑问了:要是我把\0单独放进字符数组中,它还能像上面那样藏起来找不到吗?

我试了试,看来不行。图c和图d是两张证据:

图c

图d

大家可以从图c和图b中看出,单独加了个\0后,arr3字符数组打印到 \0 的时候就停⽌了。

四、小结

        

        所以,大家想打印字符数组时,记得单独再加个\0——永远都不能忘记被区别对待——除非你就是要随意(值) 。

        

  关于printf函数和stdio.h,需要的可以看这个:C语言:工具人printf-CSDN博客

        关于main函数,需要的可以看这个:C语言:“奇异”main函数-CSDN博客

暂时介绍到这里,后续有的话会继续补充。

  • 35
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值