2:初学C语言,自我单纯知识复习。

字符串的补充

  • 前面讲到了关于字符串如何打印,其实字符串的打印是有结束标志的,这个标志就是\0,只不过在打印过程中并没有显示出来,是隐藏的,就像游戏里面的一些隐藏机制。

  • 而字符的单独打印则不会停止,反而会出现一些随机值。因此在单独打印字符链接的时候是需要加上\0的,因为字符没有这个隐藏机制。

  • 对了,字符的打印也可以用相应的ASCII编码值来代替,好比ASCII编码值的十进制中80=P

#include<stdio.h>
int main()
{
printf("%c\n",80);
printf("%c\n",'P');
return 0;
}

在这里插入图片描述
这里想说明的是,如果想用ASCII编码值来代替字符,是不需要用单引号’'引起来的。
当然,如果你想打印ASCII编码的整数值,也是可以的。不过要把%c换成%d
但似乎没必要哈哈。
ps:%c打印字符,%d打印整数。

strlen(库函数,头文件是string.h。跟printf函数对应的头文件stdio.h一个意思)

strlen=string+length,一种组合,在英文中,string是字符串的意思,length是long的名词形式,意思是长度
str``len就是它俩的组合吧,字符串的长度。那它是用来干啥的嘞。顾名思义,就是用来计算字符串长度的函数

ps:字符串在前一个文章中提到,用占位符%s,然后用英文的双引号""引起来。

#include<stdio.h>
#include<string.h>
int main()
{
printf("%zd",strlen("test.c\b\128_86"));
return 0;
}

这里计算出来字符串的长度为12(一个字符为一个单位)
在这里插入图片描述
按道理数的字符的长度为15呀,为什么这里是12呢?
因为\b和\12是转义字符,转义字符是作为一个字符的,要把它看作一个整体

转义字符

在前面的代码中我们可以看到\n和\0,它俩就是转义字符,简单理解一下,“\”就是“转义”,
这个斜杠后面加了个字符,就是转义字符啦,而转义字符被视为一个字符。
就好比,函数y=x,前面加个系数2,就是y=2x;如果加平方的话就是y=x²。虽然两者不一样,前者是一次函数,后者是二次函数,本质都是函数。

  • 那么\n和\0有什么用呢?
    \n代表换行的意思。n=line feed
    \0是字符串结束的标志,不仅是打印的还是计算其长度的。
  • 这里演示一下\n的意义:

在这里插入图片描述

  • 不换行的话就是这样的

在这里插入图片描述
换行也可以这么理解,也就是在这一行的代码中结束这一行的标志,从上往下看。

  • 转义字符表

在这里插入图片描述

  • 比如你想响个铃。就码个\a(a=alarm),这个时候嘞,电脑会响一下。不过记得把电脑声音打开,不然听不到

请添加图片描述

  • \bb=backspace),也就是退格键,这相当于往后退了一格,并且往后覆盖了一格。

在这里插入图片描述
看这里的c没了,被d给“退走了,慢走不送~哈哈哈

  • \t (t=Horizontal tab) 其实相当于Tab键。
    在这里插入图片描述
    有\t的代码中间是有空档的。
    第一行的空档有3个单位,第三行的空档有7个单位;(可以自己数一下)
    第一行把左边“12345”这五个单位与第一行的空档的3个单位加起来就是8个单位;
    第三行把左边的"1"这一个单位与第三行的空档的5个单位加起来就是8个单位;
    也就是说要TAB的越多,空档越少。不过x+y=8(x:空档的单位,y:被空档的字符单位)

现在有个问题了,我这里空档的都是在1~8以内,那8以外的呢?
在这里插入图片描述

被空档的字符单位如果是8,空档的单位就是8了:如果是8之外的9个被空档的单位的话,(看第一行),
“12345678”组成一个大单位,剩下的“9”与后面7个空档单位相加就是8个单位了
总结一下,说的哲学点,就是此消彼长的关系,说的书面点,就是反比的关系

其他的转义字符

在这里插入图片描述

比如这里我想打印个\n(\ \)

在这里插入图片描述
在前面有讲到过\n是起到换行的作用,但是这难免会引起歧义,如果只是一个\n的话,就会被识别为转义字符。
这个时候我们就要再加个\的,以此避免歧义的产生。其实这解释为什么打印一个\的话要多加一个\

  • 再比如我想打印\和’以及"这三个字符,以下是错误示范

在这里插入图片描述

这里看,难免就产生了歧义,单引号和双引号都不明确是在引什么,是前两个引号还是后两个引号呢?
会产生这样的问题。以下图片解释,只要加个\就能避免产生歧义。
在这里插入图片描述
这里解释了单引号和双引号。接下来解释\和?

?的斜杠

先配个三字母词的图
在这里插入图片描述

比如,我想打个(how are you??)

在这里插入图片描述
这里打印出来原汁原味。没什么问题。这里使用的是vs编译器,其他的编译器可能就会识别三字母词。
这样会导致 ??)变成],也就是(how are you]了。因此,在打要打印?的时候,建议还是加一下\,
养成一个习惯,以免因小失大。以下图片打印的跟上面的一样的。
在这里插入图片描述

\0(字符串结束的标志)

从ac就停止打印了
在这里插入图片描述

**

特殊的转义字符

在这里插入图片描述

  • 十进制各个位数由0~9的数字组成, 八进制便是0~7的数字组成。
  • 比如\156,但不能\158,因为是八进制,只能由0~7的数字组成。
  • 那十六进制呢?是由0~15的数字组成码?\x310?这里的“10”是一个整体,是一个数位。
    -这会引起矛盾,于是用a代表10,b代表11,以此类推。因此是\x3a。
    而在编码过程中输入这些字符,会进行识别,然后把它们转化为ASCII码的十进制,
    接着对应ASCII码的十进制的字符。

比如这个,@的八进制是100,我们便要输入\100;十六进制便是\40在这里插入图片描述
LOOK (提醒一下,打印字符用占位符%c,并且用单引号引起)

在这里插入图片描述
不约而同地打印出了@不过,这里十进制的却不用单引号引起来,

***总结感觉学c语言不容易呀,或者说学什么都不容易吧,尤其是刚刚学的时候,大脑需要时间去缓冲一下,而且自己有时候码着还忘记换行,哈哈哈,自己脑子默认了,打出来跟脑子不一样又把自己惊一下。。。
不过,慢慢来吧,一点一点学,总能学会的。目前我觉得计算机这个还是非常严谨的,稍有不一样就出错。。
给自己挖坑呢,还乐此不疲地往里跳。
嘛,目前的感受就是,自己在写这些东西还是很投入,愿意花时间的,毕竟,进入一种忘我的状态了~
不知道说什么,就下次再见吧┏(^0^)┛拜拜

ps:写的过程难免不严谨或者有纰漏,还望多多包涵。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值