C语言基础——字符串与数组及部分操作符

前言

大家好呀,这章节我在这里讲讲字符串与部分操作符,在这之前,我想先和小伙伴们聊聊天,想让小伙伴们跟了解我一点(如果赶时间的话或者不想看的话可以直接往下看哦)本人是一个大学生,而且高考考的不是很好,就是一个很普通的一本,而且专业也不是计算机,是设计方面的专业,我本来是想转专业的,但其实我也蛮喜欢设计的,所以就决定双修啦,说这些是想说明,其实我的计算机也就一般般啦,所以希望小伙伴们能陪我一起坚持的去学好C语言。好啦,不先聊啦,看正文吧。

字符串

1.字符串的介绍

其实我在前面几章就有说过啦,不知道大家还记不记得,大家现在应该都知道字符是什么,也知道它的输入输出方式,字符串呢,就是把字符串起来,没错'h'是一个字符,"hh"就相当于两个字符串起来,所以就是字符串。

2.字符串的使用

我们知道字符的输出是用char类型输入,用%c类型来输出的,那字符串又是怎么输入和输出呢,接下来我们一起来看一下

如图所示,

我们知道,字符串顾名思义就是用很多个字符串起来(但是你要是认为一个字符也可以看为字符串,在程序上没有什么问题,但是我自认为没有必要)。所以它本质上还是字符型,所以创建时还是用char型让计算机明白要创建的是字符,然后给它命名,我这里命名的是ch,但是仔细看,我这里后面有个[ ]并且里面有个20是什么意思呢,这里就是很关键的地方,它告诉了计算机我不是要创建一个普通的字符,(而是王维诗里的字符)(乱入)(滑稽)而是字符串,这个[ ]里面的数字就是告诉了计算机要创建字符的数量,这里计算机就会开辟20个字符的空间,当然,空间开辟在那里,你用不用是你的事情,所以哪怕你只用1个空间,那也没办法,有空间任性嘛,但是最好不要这样做,因为内存是大家共享的,不单单是你要用,还有别人要用,总不能你大手一挥而别人缝缝补补吧。所以如果想避免浪费怎么做呢,肯定是让别人帮你做啦,如果有人说你浪费,你就是不是我做的岂不是更好,这里的别人就是计算机啦。

如图所示,

你看下面的[ ]里面什么都没写也没有错误,这就是让计算机去帮我们计算后面的内容内存大小,然后帮我们分配合理的内存,这样非常节约空间,但也有坏处,就是如果以后想在后面增加内容就比较麻烦,因为后面没有内存了,所以就要先给它增加再加内容,这个我们后期再说。表示字符串的方式除了这种以外还有一种。

如图所示,

与上面相比,就是多了一个{ }啦,其他的都一样,有人就又想啦,我[ ]里不写,我后面也不写这样会不会成功,肯定不行了啦,如果后面啥也不写,那计算机就不知道算什么了,它很忠心的,主人给它一个命令,它才执行一个指令,所以请不要戏耍他,它会难过的(滑稽)。

剩下的就是如何输出字符串啦,这个就比较简单啦

如图所示,

%s就是字符串的输出方式

输出结果就是这样啦。

3.strlen函数

有人可能会想,所以hello world到底是多少个字符啊,难道让我一个一个的数嘛,那也太麻烦了吧。那我们接下来就来看一下可以帮我们数数的函数,strlen函数吧。

3.1 strlen的介绍

strlen函数就是专门用来计算各种字符串等的长度的。

3.2 strlen的使用

如图所示,

strlen函数被包含在string.h的头文件之中,如果想要使用,就要引用string.h,和sizeof的用法很像,但我在这里还是要强调一边,sizeof是操作符,不是函数,我们把要求的字符串的放在strlen后面的括号里面,然后用整型变量来表示,但是同时它也可以像sizeof那样来表示

如图所示,

使用%zd来输出,也是strlen的输出方式,我们来调试看看。

这里我们可以看到,总共有11个字符,但是hello world不是只有是个字母嘛,可恶竟然真的去数,计算机里面的字符在没有本地化之前(后面会讲)都是存储在ASCII码表里面的,所以说,有哪些字符我们可以在ASCII码表里面找,空格就是在ASCII码表里的,所以它就是字符。所以加上空格总共有11个字符。

3.3 strlen的运行逻辑

我们大家来多看几组字符串的长度,来看看有什么不同之处吧。

如图所示,

我们可以看到,第一个字符串ch1就是我们一直以来测试的字符串,长度就是11,第二个ch2呢,emmmm感觉上来就是原本可以一次性输入的字符串它分成一个一个来输入了,非常的麻烦,而且本质上不就是ch1嘛,长度肯定也是11啦,接下来ch3(什么鬼,不就是在ch2的基础上再加入一个\0嘛,肯定是12个啦,我太聪明啦,哈哈哈),一看就是12个对吧,那么我们接下来运行看看,

如图所示,

嗯,第一个很显然就是11个没错,第二个是什么鬼,竟然有59个,怎么这么多,难道是运行时有几个氧元素进去被算进去啦?而且第三个为什么才11个,怎么明明比第一个多一个总数量却没有增加,怎么回事呢?这个时候先不要急,我们不是知道字符串怎么输出了吗,我们输出一下看看有什么区别先。

如图所示,

emmmm,怎么计算机打了这么多烫啊,还有一个不认识的字,这到底是怎么回事啊。接下来我来为大家讲讲为什么吧,我想聪明的小伙伴或许已经猜到了原因,没错,就是和ch3里面的'\0'字符有关,我们计算机在我们没有指定要多少个字符时是怎么让strlen知道要计算到哪里停止的呢,就是靠'\0'这个字符,虽然看上去是两个字符,但实际上这两个字符是一个,在ASCII里可以找到的,就在第一个,也就是0这个位置,strlen函数从一个字符串的头去运行,然后再在识别到\0字符时停止,然后再去求\0前面的字符数,这就是为什么ch3明明比ch1多一个字符数量却还是11的原因,而ch2呢,因为字符是一个一个输入进去的,没有输入停止符,所以strlen函数在识别到我们认为的最后一个时还是不会停止的,一直会识别到\0为止,所以说会是随机值,而后面烫的部分就是别人的空间或者其他什么空间里面的内容。一般我们字符串会自动分配很多\0,等我们用时在覆盖掉。

数组

1. 数组的介绍

我们刚刚才了解到了字符串的使用方法,那么我想大家应该很快就能明白数组,在这里我先粗略的讲讲数组吧。数组其实和字符串一样,就是用很多数字串起来的东西,可能会有人奇怪,想串起来直接输入int a = 100;你看,1和0和0不就串起来啦,这说的倒也没错啦,但是此串非比串,直接输入100很显然,计算机是分辨不出来这到底是一个整数还是很多个数字串,所以才有了数组,接下来我们一起来看看吧。

2. 数组的使用

如图所示,

其实和字符串很像,首先字符串本质就是字符,所以用char型表示,而数组本质也就是整数,所以用int来表示,后面就是输入想要保存的数字了,但是数组没有什么专门的一次性输出的符号,要是想一次性输出出来,得使用循环,关于数组的运用,我到时候会专门再出一章来讲解,这里就简单的介绍介绍。

操作符

1. 操作符的介绍

这些就是c语言中的操作符啦,接下来我来给大家介绍部分,剩下来的部分我们在以后的学习中慢慢补充

2. 操作符的使用

优先级

优先级就是计算机先处理的那一部分,谁优先级高,计算机就先处理谁。

2.1 第一优先级

如图所示,

这就是计算机最先处理的部分,这里先来讲讲()、 ++ 、 --、括号很好理解,就是可以改变优先级的顺序,让原本后处理的东西先处理

1.()

如图所示,

我们可以看到原本是先3*4然后再加2的变成了2+3再乘4了,这就是()的作用。

2.++、--

那么这个++和--是什么意思呢?这个其实叫做自增和自减啦,它就是再程序运行到它的时候它会发生自己增加1或者减少1的作用。

如图所示,

     

再程序运行到了++时就给a增加了1,而--也是同理,但是这个时候就有一个问题了,这个程序没有什么条件还好,但是到时候有条件了(比如如果a = 1就怎么怎么样,如果a = 0就怎么怎么样)那么计算机到底应该是先把a当1用,还是当0用完再自增呢,这个时候就有前置++和后置++的区分了

前置++、--

符号在前面,所以就是先自增自减在判断。

如图所示,

这个程序就是说如果a是6就输出唱跳rap篮球,如果不是就输出坤坤(我不是黑子,滑稽)很显然,这里的a自增成6了才运行的程序。

后置++、--

如图所示,

你们看,按找前置++的逻辑,a应该变成6且输出唱跳rap篮球,但是却不是这样的,a确实是变成了6,但是却输出的是坤坤,这就是因为它是先运行程序在自增的,也就是说这个条件里面,计算机是吧a当成5来判断,等运行完这个条件语句后再自增成6的。

2.2 第二优先级

这里依然有++和--,但是第一优先级的是后置++,--,这里的是前置的。sizeof已经在前面几章介绍过了,这里就不过多赘述啦,这里的+和-可不是加减乘除里的加减,而是表示正负号的+和-哦,一定要注意,++和--也在第一优先级时讲啦,注意,这里的*也不是乘法,而是指针里面的解引用操作哦,这里就主要讲讲!吧。

1. !

这个都非,就是不是什么什么的意思,比如!0就是不是0的意思,其实很简单的

如图所示,

很显然如果博主想要帅的条件是a不能为1,而这里a 等于1,所以就只能被迫聪明了啦(臭不要脸)。

2.3 第三优先级

这个主要就是各种类型的强制类型转换,比如把int型变成float之类的,今天就不过多讲解啦。

2.4 第四优先级

这里就是乘法和除法,这个相信大家都知道,所以这里主要就是介绍介绍%。

1.%

这个符号叫做取余,顾名思义就是记录无法整除的数字的余数的

如图所示,

这里就是a除以10还剩下多少,很显然,还剩下9,所以b就是9,可能会有人认为它没有什么用处,但是打错特错,你想想,有的时候可能会有题目问你判断奇数还是偶数,这个时候怎么办呢,取余嘛,就取2,如果答案是1,那就是奇数,如果是0,那就是偶数等等,取余的作用还是蛮大的,等以后我们再来慢慢探索。

2.5 第五优先级

这个就不用我过多的讲解了吧,就是很普通的加减。

2.6第八优先级

注意,在C语言之中相等的话要用两个等于号,不等于就是等于号加一个!,这个很重要,C语言中的=表示赋值,就是把=后面的值赋给=前面的值,会把=号前面的值覆盖掉,所以要判断相等时一定要用两个=,也就是==。

3.操作符总结

C语言中的操作符很有限,但是每个的作用都十分的巨大,所以说一定要把每个操作符的作用记好,在本章节就讲这么多,等到以后时我会慢慢完善其他各种操作符的。

总结

这一章节我们了解了解了字符串和操作符,C语言的一些基本概念都已经了解完了,那么接下来我们就可以来看看分支语句和循环语句啦,期待下一次见面啦小伙伴们,如果以上有什么不对的地方还望指正,谢谢大家啦。

  • 29
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值