00:00
同学们,我们来继续学习C语言课程的下一个章节,结构体和共用体。那首先呢,我们先来看一个实际的需求。现在呢,有这样一个需求摆在我们面前,大家先思考一下,说有一个养猫猫的问题。张老太太呢,养了两只猫猫,一只叫小白,今年三岁,白色,还有一只叫小花,今年100岁。好的,这猫都已经成精了,对不对?花色请编写一个程序,当用户输入小猫名字的时候,就显示该猫的名字、年龄、颜色,如果用户输入的小猫咪有错误,则提示张老太没有养这只猫猫。那这个题大家想一想,你怎么完成?就是你先用你现有的知识结构。来完成这个题,你会怎么思考呢?来,我们看一下。如果说我们用现有的技术结构,知识结构来做的话呢,我们有两个解决方案,第一个呢,咱们单独的定义变量解决。
01:07
那就麻烦了,那你现在一只猫,大家看一只猫是不是有三个属性呢?啊,有三个成员,那么一只猫就会对应三个变量。是不是三个变量,这是一个,第二个呢,第二种方案就是大家可以用数组来做。数组呢,因为呃,它是一组具有相同类型的数据集合,在编程中呢,往往我们还需要一组类型不同的数据,这也不行,因为我们我们说我们可以在一个地方放。在一个数组里面放两只猫,但是问题是在于我们数组呢,它是要求放相同类型的数据,而我们的一只猫的成员属性,你看它有年龄。呃,一般来说是一个整形嘛,然后呢,它的名字一般是字符串对不对。
02:00
哎,然后它的颜色呢,一般也是字串,所以说。如果我们用数组的话呢,还是有点麻烦,因为我们数组呢,要存相同类型的,而我们现在呢。这个猫的属性,它的类型不一样,对吧,所以说你看我这写的,例如猫的名字,我们需要使用字符串,年龄需要使的,因为数据类型不同,不能用一个数组来存放,你还得用两个数组,那又麻烦了。对不对,用两个数组,用两个数组你还用下标来区分,所以说也很麻烦,所以说我们如果用传统解决方法来解决的话呢,大家可以看一个简单的示意,可能是这样写的,大概是这样写了。呃,比如说我们写一个void。贸易的,我写到这里写个示意图,比如说我们怎么如果是用单独的变量来定义的话呢,我们可能会这样写。我们先写第一个猫的名字。比如说。心。啊,比如说这样,Char,呃,K1的名字,对,然后名字假设我们是用个数组来写,对不对,叫小白是吧?A,然后呢,诶,然后我们再写第一只猫的它的。
03:16
年龄,比如说特吧,CHART1K1K1,然后呢。AGE。IG等于多少呢?哎,等于刚才不是三岁吗?对吧,然后呢,它还有什么呀,它还有它的颜色,Char k1的color。对,假如我们也分配十个这样的空间,然后呢,百色。好,这样子你看麻烦了,这样子的话呢,同学们想一想哈,想一想你一只猫就有三个变量,管理起来其实是非常麻烦的,你这才一只猫呢,那你第二只猫,你又得去写一个CAT2NAME cat2age。
04:02
是不是很麻烦呢?那如果说你用数组来解决,你的思路会怎么样呢?假如说你用数组来解决,我们也可以写一段简单的示意图。比如说咱们现在呢,用数组来做,你用你用数组来做的话,你会怎么办呢?大家想一想。不好意思。如果我们用数组来完成的话,同样存在一些问题。对,你可能会这样写了,诶,你说我先写一个数组,专门用来存放这个猫猫的名字,比如说。我们写一个呃,指针吧,用指针来存放,比如说我们这里面全部存猫的名字。对不对,等于什么呢?我们整一个数组呗。是吧,就像我们前面那样写一下第一个猫对吧,第一个猫叫小白。小白,对,第二个猫呢,对,我们叫小花。
05:00
小花,对,假设我们这个就定好了,假设这是我们的一个字符数组,那嗯,那问题来了,你还有你还有什么呀,是不是你还有这个颜色呀,那颜色你你得怎么办呢?你又得来一套,对吧?假如是假如说假如说还要记录他的这个年龄,我们按顺序来年龄,那你又又得怎么样呢?又得去整一个数组,比如说我们这个地方存的就是猫猫的年龄。对,猫猫的年龄,那在这里面呢,我们可以存放什么呢?存放相应的这个数据进去,比如说我们第一个猫对吧,我们第一个猫的年龄是三岁。对,第二个猫的年龄呢,比如说是我们的这个100岁,好,咱们这边可以给他写写好对吧,二我就写两个这样子。那大家想你这样去做仍然不方便,为什么不方便呢?因为你在这个经营取的时候呢,你还得考虑下边要对等,就第一个猫,第一个猫的名字是要通过下标为零来取,这边的对应的年龄呢,也是下标为零,显然也也很麻烦。
06:11
不利于他的管理和维护,所以说同学们可以看到,那现在我们总结出来这个传统的方案呢,他的问题是什么呢?我总结到一句话就可以说清楚啊,他的问题是这样子的。就是传统的方案的问题是不利于。不利于我把这个标成黑色。它不利于什么呢?同学们想一想,它是不是不利于我们数据数据的管理和维护?对吧,而且你想一想,本身这三个属性,或者叫成员名字,年龄,还有颜色,你硬生生的把它分分解开来了,并不是一个好的方案,为什么呢?因为因为本身。
07:00
本身猫的猫的三个属性。我们说的三个属性就是它的名字。还有什么呀,还有他的这一个年龄。对吧,还有它的颜色本身呢,是一个整体,是一个整体,然后我们按照传统方法会怎么样呢?传统的方法把它拆解了,传统的解决啊,传统的解决方法是怎样呢?是将其拆解了。将其分解,这样呢肯定是不好的,说这样不好,那如果这样不好的话,我们怎么解决呢?OK,那就提出了我们一种新的技术叫什么呢?各位就提出了一个新的东西,叫做结构体就出来了。OK,这就提出了我们的一个新的数据结构,叫结构体。就这么来的。各位好的,那关于我们这个结构体的这个知识点的引出,我们就讲解到这儿,至少大家通过呃,老师的这个段讲解你知道。
08:05
对于这样的一种问题,说有一个有一种数据,就是现在,现在的问题其实就是归纳总结,就是相当于有一种数据,这个数据呢,它是有多个不同类型的数据构成的。比如像刚才猫猫猫其实也可以看成是一种数据,但这个猫呢,它有三个不同的这样的属性,或者是成员,那共同了,共同构成了这个猫的体系,那我们现在呢,用原先掌握的技术解决起来比较困难。比较困难,所以我们现在就要使用这一个叫结构体的来解决好。关于结构体的引出,我们就给大家讲解到这里。
我来说两句