00:01
那么既然我们讲到结构体,我们就来看一下结构体到底是个什么样的东西,它跟我们的变量的关系又是怎样子的,它是这样一个概念,大家看老师这画了一个图。那么比如说我们以解决养猫问题来说,来做一个说明,我们可以怎样呢?我们可以把所有猫的特征提取出来。形成一个叫做K的结构体,那么这个结构体呢?它是一种数据类型。那么我们可以看一下这个K呢,有哪些分析,有有哪些成员我们分析出来呢?第一个所有的猫呢,都有name。对吧,有名字啊,猫有什么呢?有年龄还有什么呢?Color这个是这三个成员。或者说你们称之为变量,其实这这个地方呢,我们叫成员比较好,呃,后面呢,我们就统一称之为成员,有些书上呢,把这个叫做结构体的变量也可以。
01:02
我们分析出来呢,按照题的要求,有名字,有年龄,有color,那么我们有了这样的一个。数据类型过后呢,我们可以通过这个数据类型来创建对应的变量。对。那呃,我们刚我们前面讲的这个猫呢,也可以是人,也可以是fish鱼啊对,就说除了写到这里啊,除了可以,呃,除了。除了可以,可以有K这个结构体。结构体。结构体还可以,还可以有,比如说person啊,还可以哈,可以有什么呢?Person。这个结构体。还可以有什么呢?诶,有fish鱼这种结构体。等等。等等,就说我们这种用结构体的方案来解决问题的这种思路。
02:06
都是都是通用的,不仅仅是可以去解决养猫问题,我们还可以去比如说做一个管理系统啊,对不对,管理人的信息的系统,我们也可以做一个person结构体,如果说我们有很多这个鱼需要管理,我们也可以用fish结构体来完成。那这样子呢,我们来看一下这个关系。它的关系就是变成这样的了,我们把猫猫的结构体啊,把猫的特征提取出来,形成一个cat结构体,然后这个cat结构体呢,就可以去创建对应的多个的变量啊,我们可以有第一只猫,第二只猫等等,当然人也一样诶,我们可以把人的一些信息提取出来,做成一个结构体,然后呢,通过这个结构体这种数据类型来创建对应的变量,比如说我可以创建张三,也可以创建李四,好这样子,那这样子我们不说废话,我们直接呢用结构体来解决养猫的问题,让大家有一个直观的感受,打开我们的VS这个哈,来我们玩一把吧。
03:10
那现在呢,我们还是要新建一个文件夹了,现在是15。各位同学,跟上我的思路。好,我新建一个章节哈。CHAPTER15。那这里呢,我们先来做一个养猫的问题。对,这个养猫问题用结构体来解决,来走一个,那么我们就要cat,好吧,Cat DEMO OK。TDEMO,那现在呢,我们先把这个后缀名改一下。我们开始来解决,好吧。首先,Include。Include std IO。STDIO,然后呢,我们开始来写代码了,主函数。主函数,首先根据前面的分析,人家的要求呢是非常明确的,把这个要求拿过来。
04:02
这边是养猫的要求,对不对,好的。好,现在呢,我把这个需求先拿过来。好,然后诶这边有点长哈。现在我们可以看到,我们先做一个分析分析,现在就是第一点呢,我们发现猫。哦,我们我们发现这个猫猫呢,猫猫有三个成员。啊,这个呢,有些地方叫变量也可以哈,有些地方叫变量,所有三个变量。变量组成。是这样子吧,因为这说的很清楚嘛,有名字,有年龄,有颜色,OK,然后呢,我们就可以干什么呢?诶我们使用结构体解决。好,那既然用结构体解决,那么我们就直接升代码了,首先第一步我们先创建结构体catch。这个数据类型。注意啊,这个结构体K它是一种数据类型了,就它是一种数据类型,所以它是一种数据类型,是我们自定义的,是我们自己构建的啊,这是是一个数据类型。
05:15
数据。类型,好,大家大家回忆一下结构体,在前面我们讲过结构体它是一种什么数据类型,还有印象吗?如果大家想不起来,可以把这个笔记打开,我们回顾一下,当时我们是讲到结构体的时候呢,我们说诶这个是放在后面讲的,对不对?好,我们打开给大家做一个简单回顾。看看结构体这种数据类型是属于哪一块的类型好,打开它我们看一下。在哪里讲的呢?应该是在讲变量的时候,我们讲过这个内容,对不对,变量类型大家看这里。哎,这边是变量。变量类型在哪里讲的呢?在。啊,数据类型在这大家看。
06:00
构造类型里面就有结构体。对,这就是,那这样子的话呢,就比较简洁简单了,那我们明白这个道理过后呢,现在开始来定义,怎么写呢?S。OK,然后呢,Cat包起来。包起来,那这里面呢,我们认为哈,我们认为有三个属性,第一个呢是它的名字我用指针来表示,第二个呢,我们是有年龄用T来表示,第三个呢,有颜色也用一个指针。来来,接收好,同学们,我做一点注释。这个就是结构体的名字。叫cat。也就是说K呢,就已经是个结构体了。明白,它是一种数据类型,是我们自定义的,或者做,或者按照我们这叫做自己构造的一种类型。哦,结构体,那么K呢,K。T就是我们自己自己构造的,构造的一个数据类型。
07:08
能能理解这个意思吧,就是这是这个K呢,是一个结构体,它是我们自己构造的一个数据类型,那么这边是它的名字啊,这是名字。这个名字呢,大家可以看到,我们是用一个指针来说明,这里呢使用指针。指针将来可以指向什么呢?指向指向一个字符串。对,那这个就是当然是年龄了,对不对,年龄这个是什么呢?颜色。OK,写完了,那写完过后呢,同学们,这个地方有个分号啊,注意这个分号咱们要跟上,这个分号要跟上,那现在有了这个,呃,结构体过后呢,第二第二步使用结构体就是我们。我们构造的这个结构体KK结构体创建对应的变量。OK,那怎么来创建一个变量呢?非常的简单,Structure看清楚了,KK1。
08:06
这是我们的一只猫,这就是使用结K结构体创建变量,那这个呢,就是K1就是K的一个变量,这样理解哈,也就是现在呢,K1就是K,如果写全的话,这样写structure k的一个变量。能理解了吧,就有点类似于以前我们写的int number,那我问大家是不是number就是int的一个变量啊,或者说number就是int变量,能理解这意思吧,所以说我们这也可以理解成说什么呢?K1是它K1是什么变量呢?是structure k这种变量。好,那么现在就可以赋值了,干什么呢?给给这个K1负的各个成员赋值。因为这个K1里面不是有三个成员吗。那现在你还没赋值呢,那我开始赋值了,K一点你看下面呢,它就会提示说,诶告诉你啊,K1呢有三个成员需要复职,那第一个名字我们就可以写名字了啊,就是叫小白。
09:13
他的名字叫小白,没问题吧,然后第二个呢,开1AGE。Edge是什么呢?好,它是三岁对不对,K2K1还有一个color是什么颜色啊,白色。白色没问题吧,同学们,那你看这就是我们的。给他的不值。给他的扶持,诶,但是这这写错了啊。这地方点错了,点color。看了好,这就写完复制,那这个复制完了过后呢,我们现在就可以输出信息了,另外一只猫还可以啊说老师我们还有一只猫吗?可以,因为不是有两只猫吗?对,我们再创建一只猫就可以了,怎么创建呢?一样的规矩哈,在这创建再创建一只猫。Kite。啊,CAT2啊,那么这个CAT2呢,注意CAT2呢,也是对CAT2呢,它也也是刷K的一个变量,我们同样也可以给K2复制,它们是独立的K2给K2。
10:14
各个各个成员复制没问题吧,同学们,待会我们还要详讲,大家先听着,CAT2呢,也可以给他名字,比如说看二它的名字叫小花,是不是小花啊,诶,然后他的年龄呢,对,刚才不是说这个年龄是它是个非常大的猫吗?100岁CAT2干color,它什么颜色呀,花式。是这样子吧。同学们花式。花色。OK,花色好。那话说完了过后呢,我们现在就可以输出信息了,输出两只猫的,诶两只我第一次写慢一点对不对,多做点注释两只猫的信息就可以了,那么我们来看怎么输出呢。
11:01
来走,我们说第一只猫啊,第一只猫我们就开始写啊,第一第一个猫,第一只猫。第一只猫,那我就开始写了,呃,它的名字等于百号S,它的年龄百分号D,它的颜色百分号S,写完那书就行了呗,Cat一点。名字第二个T1,第二什么呀,年龄诶不好意思。The edge。当然K,呃,K1怎么写成K2 K1,还有一个K一点这个color,大家有没有发现,这样管理数据是不是感觉很方便?为什么呢?因为我们是把这一个猫的它的所有的属性封装在一起的,便于我们的管理。你原先是松散的,现在我用一个K1就可以点出它的所有的成员,或者叫所有的变量。肯定比原先方便很多,因为我只要知道K1,我就可以把它所有的成员和变量拿到。
12:02
当然很很方便了,好,那第一只猫我们就说出来,第二只猫来,走一个第二只猫。那第二只猫呢,前面都不变,这个只要把名字换一下就可以了,是不是这样的道理啊,CAT2CAT。写完了最后呢,为了好看,咱们get恰一下,那么就写完,对,所以说我们通过这个案例,大家应该非常明显的感觉到,我们可以把把这个属性整体的进行一个管理对比原先用单个的变量来独立管理肯定要方便,因为相当于说我这个结构体可以把你的不同的变量组合在一起嘛。对不对,就好像咱们以前,呃,有有三个变量独立的,现在呢,我们有一个盒子,诶我们有个盒子怎么样呢,把这个装进去。把它装进去,然后再给它取个名字,比如KD1,然后通过这个KD1呢,就可以把这里面的所有的变量取出来,当然方便了,对不对?有盒子了吗?OK,运行一下来,同学们,我们运行吧,看看效果OK不OK,好。
13:06
呃,运行之来跑起来。看效果。看效果。看看看能否输出相应的信息。好,我们可以看到呢,第一只猫叫小白,年龄三岁,颜色白色,第二只猫对不对,也是OK的,好,第一个题我们就讲完了,也就是说经过这样一个折腾呢,我们把结构体的一个快速入门,入门案例给大家讲了,当然这样讲解呢,还不够深入,待会儿呢,我们还要具体的系统的讲解结构体的方方面面,包括它的定义,包括它的细节,那么我们在下节课再给大家继续讲解。好,各位同学,关于我们这个结构体的一个入门级的介绍就说到这里。
我来说两句