00:00
同学们,我们继续学习高校大学生C语言课程的下一个章节什么呢?数组,我们来看一下,数组还是按照我们以前的规则,我们先来看一下为什么需要数组,举一个例子。现在呢,有一个养鸡场,有六只鸡,它们分别的体重为三公斤、五公斤、一公斤。3.4公斤,两公斤和50公斤啊,这个鸡长得非常的巨大啊,50公斤,现在请问这六只鸡的总体重是多少?平均体重又是多少?希望你编程完成,那同学们想哈,这道题已经摆在我面前了,如果我们用传统方法。诶,这个为什么这个字这么大啊,使用传统方案。传统方案的话,是不是你会这样去做呀,你会你定义我我说一下这个思路,定义六个变量。六个double。对不对,然后呢,统计,然后统计。
01:04
统计它们的和并,并求出,求出平均值。一般来说就这样去做的吗?你定义六个double这个变量来求它的平均值不就完了吗?但问题来了。你如果这么做的话,会有一个什么问题呢?就是人家有六只鸡还,你还可以应付写六个变量,但是一个养鸡场,如果他有600只鸡完了,那你就代码能去写600个double变量吗?不现实。所以说如果你用传统方案来做这一个,求这个鸡的总体重和它的平均体重,这个显然是不行的,因此我们得出这个结论,传统的方案。传统的方案方案。比较什么呢?呃,不灵活不灵活不能。不能不能够完成完成这个数量,数量较大的。
02:07
较大的。较大的需求,数量大的需求。那这样子呢,就引出使用什么呢?这就引出我们要讲的A,就引出我们的。内容就是引出我们要讲解的什么呢?数组。这样又引出来了。对,也就是说我们这个数组呢,它能够解决这样类似的问题,就是你数据量很大。你数据量很大,你有600只鸡,或者6000只鸡,6万只鸡,我用数组来解决。那么到底数组是个什么东西呢?来,我们来看一下何为数组。数组先下一个定义,所谓数组,就是一组数据。那么它是干什么?可以存放多个同一类型的数据,也就说数据数组呢,也是一种数据结构,但是呢,它数据类型哈,它但是呢,它可以放多个同一类型的数据了,它是属于一种构造类型的,前面应该学过构造类型有结构体,共用体,数组,还有指针对不对?
03:14
哎,这样子呢,大家应该有一个基本的认识啊,枚举啊,刚才我说错了。我们构造类型里边没有没有指针,我们再看一下。再看一下变量的数据类型哈,啊,这个这个数据类型有哪些,看数组结构体,共用体和枚举类型,指针是一个独立的数据类型,刚才这个口误。啊,构造类型只有数组结构体,共用体和枚举类型,那现在我们枚举类型是讲过了,数组是不是现在正在讲啊,好,回到这边来。那么。那么也就是说我们这个数组呢,它是一种数据结构,而且它是构造类型的。那么传递是以引用的方式传递?大家还记不记得我们讲过宿主默认的传递是传递地址,还有印象不?
04:04
前面是说过的啊,那现在这样子,我们为了让大家对宿主有个基本认识呢,我们就用宿主来解决养鸡场的问题,我们快速的来体验一下宿主的使用,打开我们的这一个VS201。那现在呢?我们来玩一把。我们就在这一个地方,我们再新建一个文件夹。好,这个呢叫chapter。CHAPTER11了,对,现在这是我们的数组的第一个DEMO。写一个文件or DEMO?就是数组的意思。R数组的意思,零,一。好跟上老师的思路,那现在呢,我们把这个。掉下去,好吧,先来走一走,Include std。我们使用宿主呢来解决养鸡场的问题。
05:00
来写一个。把需求先拿过来,同学们具体的需求实际上前面呢已经给出了,是不是这样给出的呀。诶,那么我们怎么来解决呢?跟上老师的思路哈。那这样子我们首先第一步先定义。对,先定义数组。我们先定义数组。定义数组,那么我们现在呃,定义一个数组就可以装很多数据了,我们这个数组这样定义double。Okay hn。母鸡,然后呢,里面可以存放六个数据,这就是定义数组了。这就是一个数组,哪个呢?He就是一个数组,然后呢,我们可以完成一个初始化。初始化,初始化我们数组。的每个元素。每个元素。那么它怎么初始化呢?非常简单,H第一个写零。这个就代表我们的第一个元素,注意当中括号里面写零的话呢,它代表的是第一个元素,注意听哈,这是第一个元素。
06:08
第一个元素。待会我们讲它底层的东西,那么第一个元素,第一个是几呢?三公击给他,其他以此类推好不好?我就复制一份,一共有几个呢?12345,好,这是第二个元素,也是第二只鸡,第二只鸡的体重是五公斤,第三只鸡,那这个中号里面写二,这个中号里面的带。你有一个专业的术语叫做下标。啊,我再多说一句,这个中括号里面的这个数字,这个这位叫做下标。好,这个叫下标,代表第几个,那么零就是代表第一个,那么这个显然代表第二个元素了。后面我就不再一个说了,好不好。好,那下面第第三只鸡是一公斤,第四只鸡下边为三,那就是3.4公斤。
07:01
然后呢,这是第五只鸡。第五只鸡,它的体重为两个公斤,第六第六只鸡非常重,50公斤。好,这就初始化了,初始化完了过后,我们要求总的体重怎么办呢?好,我再定义一个变量double。OK to what?这个呢,WGHD这个呢是总体重。那么最后我们还有一个变量叫平均体重avg。平均体重我也给他求出来,我初始化0.0还记得吧,我们说局部变量的话呢,我们最好给他一个初始值。那现在我们怎么来求出它的总体重呢?我们可以遍历数组。变历数组,那遍历数组怎么变历呢?For循环就可以了,来我们整一个I,初始化I,我们现在这样写啊,For循环I等于零。I小于几呢?I小于五,Ii小于六,因为你最大是不是六啊,你啊不,你最大下边是不是五啊,所以说我小于六,I加加。
08:07
不着急啊,因为这是我们第一个体验案例,所以说你有些看不懂是正常的,然后呢,我累积体重。甲,等什么呢?OK hence这边写上I这句话就是在累积,累积每只每只积的体重。哎,没问题,每只鸡的体重,那到这里完了,负循环完了过后呢,总体重我们就得到了,我们写一下我们说总体重。总体总体重。那么总体重就是我们的这个值了,就to v。那么它等于多少呢?我们给它输出来一下,点RF输出,就是我们的to wait没问题吧,同学们,然后呢,为了好看,我们get差下各位同学,我们可以运行了,现在。我们运行一下,看看现在总体重到底是是不是正确的运行值。
09:03
那运行起来过后,如果不出什么问题呢,他应该是,诶这有问题,我们看哪里出了问题了。好,他说这个没有定义,没有定义是因为前面有语句吗?这都是哦对,我们需要把这两个变量呢,这两个嗯,变量的定义写在上面去,好吧,写到上面去,这个没问题吧。啊,这个写到上面去,以前讲过我们的变量的定义呢,得写在最上边,是不是说过这个事啊,再来运行。在运行呢,我们可以拿到总的体重。耶,为什么还是错的呢?是不是这边有没有注销的呀。好,再看一下错误。I,哦,对,还少了一个通,不好意思啊,这边还有一个ii,也是属于我们定义的一个变量,所以说还得放到上面去再来一次。再来一次,这样就应该没没毛病了。
10:01
我们可以看到总体重现在是64.4,应该没问题,自己去算一下,那么总体重拿到以后呢。周体重拿到以后,我们平均体重自然也可以得到了,我们把平均体重算出来。平均体重应该怎么得到呢?各位朋友是不是应该这样得到等于我们的总体重?去除以个六就完事了。是不是好,我们运行一下。我们运行一下,同学们看现在呢,这个就拿到一个六了。啊,运行起来平均题,诶这个没输出来哈。写一下平均平均体重,平均体重呢,就是这一个A位位置,我们仍然保留小数点两位,进进行一个输出在哪里呢?在这。来各位朋友运行。运行,我们可以看到结,结果就是64点多少去除以一个六的值。
11:02
好,应该是对的,对吧,用64.4除以一个六,应该是等于10.73的样子,应该没问题,保留小数点两位是正确的。那各位同学,那这边有一个小地方呢,需要老师给大家说一下,大家看我们在这里。我们在这里呢,写一个六,是因为我们知道这是六。假如你不知道这16有没有一个办法能够统计到这个数组的大小呢?也可以的,我多说一句。对,那么这边我们多说第四多说一句,就是如何如何得到得到数组的大小。也就是说这个数组到底是几?这个六怎么得到呢?除了你可以从这看,还有一个方法也可以得到,我给他写一写认识。好,我把这个数组的大小呢在上面定一下。比如叫。Size也可以啊,这个长度也行,R这个呢,就是用来做数组大小的,等于什么呢?可以这样写,Size of。
12:06
Set off这边呢,我们把这个横放进去。然后呢,再除以一个size of。对,Int这句话是什么意思呢?我给大家解释一下这个size of。这个赛制二物,它会统计我们这一个数组占多大的空间。啊,当然这边那应该改成double才对。Do u b。这个得到的是我们这个数组的数组的总的大小,我写到这里了。这个是数组的总大小。总的大小。那总的大小你可以算下来,你看有相当于有六个double。一个double占几个字节,大家应该是清楚的,对不对,那相当于六除以一个double的大小,所以这个大小呢,我们可以给它输出来给他看一眼好不好,因为第一次嘛,大家给可以给大家看一下,比如说我们说数size of这个等于多少呢?我给大家打出来看一下,摆放D。
13:08
第一次啊,我们就给大家看一下,这个呢,就应该拿到数组总的大小,我们运行一下给大家。对,我们看是多少。我们看一下是多少。对。那么这个size of你看是48,为什么是48呢?因为是这样子的,同学们,它是这样子的,就是因为你有六个元素,而一个double呢是八个字节,所以说它等于48是这样来的,能理解了吧。那这既然我能够拿到这个数字的总的大小,那我平均大小是不是再除以一个double的单个的一个double的大小就完事了,也就是说。也就是说这句话,同学们看到的size of double呢?是返回什么呀?它是返回double的这个一,就是返回一个double。
14:02
一个double占用的大小。占呃,占用的。占用,这样写占用的字节数。对吧,直接数你这个是48个字节除以一个八,不就是等于六了吗?就这么来的好不好,好这个我就给它注销了好吗?那也就是说这个地方如果不出什么意外就应该等于六,那既然如此,我们以后呢,就不用写这么死了,直接这样写,那这样写有什么好处,你们知道吗?这样写的好处是,如果我的数组发生变化了,那么我这边。S不需要变化。如果你先死了,那这个地方,如果这地方数组变成七了,你还得在这边改一下,很麻烦,但是如果我是用一个方法计算出来的,那我下面的代码就不需要变化,所以它更加的灵活。理解这个意思吧,各位,我们再运行一下,看代码是不是OK的跑起来。那么抛鞋过发现代码呢?完全都OK,没有任何问题,还是跟原先一样。
15:03
对不对,还是64.4,平均体重是10.73。各位,第一个我们的数组,第一个数组的快速入门案例就给大家讲解到这里,大家看理解了吗?就这个现在还没有涉及到数组的细节。只是一个快速入门案例而已,好,各位,我把这里面这块数组的内容进行一个简单的梳理,来跟着老师思路我们梳理一下。那刚才我们讲的是什么内容呢?想要讲的是数组的一个基本入门。写到进来。我们首先给大家说一下为什么需要数组。这个为什么需要数组?是不是我们通过了一个具体的案例引出了?宿主的必要性啊,这边是不是有个传统方案解决,但是这个呢,我们发现它的问题比较严重。对不对,因为数据量大,玩玩不了,好,我把这个小鸡这个图片也给他拿过来哈,这样看起来比较好,好玩一点。
16:05
好,把小鸡翻过来。那这个既然嗯用传统的方法解决不了,我们就说咱们呢,用数组来完成,那首先给大家说一下何为数组。什么是数组呢?可以简单的这样理解,就是我们存放一组相同类型的数据,就是这样子的数组呢,数组是可以存放多个同一类型的。这个。它是可以存放多个同一类型的数据,而且呢,数组本身也是一种数据类型。这在前面咱们已经说过了,它是什么类型呢?是一个构造类型。对,它默认是传递的地址,也就是说数组默认传一传指的方式,或者叫指针传递指针的方式来进行这个处理的,这点后面我们还会用到它的这个特性。
17:01
就一定要记住数组呢,它是以它是传默认传递地址。好,这个说完了,说完以后是不是我们就来了一个快速入门呢。对,我们来了一个快速入门,这个快速入门呢,我们就用数组的方式来解决了养鸡的问题,那具体来说怎么解决的呢?给大家把代码板输过来就可以了。是不是这个题啊。各位放进去。好的,同学们,那关于数组的基本介绍,还有快速入门就给各位同学讲解到这里,大家好好的消化一下,最好自己也写一遍。
我来说两句