00:00
行,那这个内容呢,我们就说完了,说完以后呢,我们接着来看剩下这两个叫数组元素的默认初始化值和数组的内存解析,那我们先来看第五个问题啊,这个仍然是写的有点多了,我们再去新建一个文件啊。叫啊这个test写个三。哎,在这里边我们去写啊,CTRLCL一下。哎,键。点儿咋了姐?来CTRL一下,好,我们在这里边呢,去体会一下咱们这个五跟六的一个使用。哎,这是咱们这个叫二维数组的一个使用啊,好,它的这个五和六。那先来看这个五啊,这块五呢,其实我们这个比这个意味的说起来的就稍微麻烦一些了。
01:07
数组元素的默认初始化值,这时候的话呢,这个元素到底你怎么去说啊,这个指的是谁?这个咱们先做一个语言上的区分,避免呢,咱们这个说不清楚啊。那个我们这样先这块有一个。呃,先来一个这个大家的一个咱们一个规定哈,什么规定呢,就是二维数组,呃,二维数组呢,它其实我们把它分成这个外层和内层吧,啊哎,二维数组呢,我们去分为叫外层,哎数组的元素。啊,还有这个叫呃内层。速度的元素,咱们先有这两个概念啊,要是没有这俩概念,一说元素这块就晕倒了,什么叫外层,什么叫内层呢?比如说哈。比如我这定一个整形吧,我叫AR,哎,这个后边呢,我拟了一个int型的数组,哎,先先我随便举一个例子啊,那么它的这个外层元素。
02:06
这个外层元素呢,我就称作像这个A20。这个AR1,哎,我把它呢都称作叫做外层元素。等。啊,这是外层元素啊,那什么叫内层元素?哎,我呢,就把这个,比如说这个零下边又在这分的这种。哎,像这种,哎,我们把它称作叫做内存元素。因为咱们现在呢,要谈这个元素的初始化值的,那就外层元素和内层元素初始化值呢,它有区别啊,所以咱们这块呢,得说清楚,先有这样的一个概念啊。有了这个概念了,我们下边来谈这个初始化值。先这样来啊,就是我们前面讲这个异位数组默认初始化值的时候,也都是拿的叫动态初始化来讲的。
03:01
哎,静态没法讲了,因为静态呢,给你把值都附上了,你也看不到它的默认值了,所以我们一定得用一个动态的方式啊,那不妨呢,咱们先呢,拿这个整形的int型来说明一下这个问题。啊,这块还少了一对大括号。嗯,哎,不对啊。少了一个中括号。在这少一个中号啊。我先呢拿它来说明一下这个问题,好大家看哈,我们呢分成叫外层元素和内层元素来问大家猜一下啊,你说我这个时候我要是执行一下这个A20。这就是我们想找的这个外层元素的值。哎,我要是输出一下。A22啊零零。这就我们想找的内层元素的值。那么大家猜一下,说这两个值,你觉得它应该是多少啊?
04:04
先说这个吧。啊,也说是一个闹,嗯。又说是零,嗯,还有吗?还有还有说什么的。三个零三个零这呃三个零是什么意思啊,你说这有三个元素是吧?哦,还可以这样想啊,行哎,还有吗。闹血了。怎么着?三啊三个闹哇,哎,三个闹加空格吧。嗯,行还还有吗。空白空白空白空白是什么?
05:02
嗯,这个时候呢,这里边儿其实还没有一个对的。对,没有一个对的好,那这个呢,确实有难度,咱们没有讲过好看这个啊,这个是多少。这个我觉得应该大家应该都能算出来哈,这个你已经到最内层的这个了,它是不是就是一个int型啊,Int型那因为你是整形了,那自然而然的应该是零,所以关键的就是看它是多少,哎,实际这个事儿的话呢,也不是说强求大家去打,其实我那会讲一位数组那个初始化的时候呢,已经有一些暗示了。啊,这个这么快吗。那是地址值吗?就是个地质值。哎,为啥是个地址值能理解吧。其实我们讲一维的时候已经暗示大家了啊,就是刚才我这个截图,你看我们这个一维的时候呢,我没有输出过AR。
06:01
啊,你自己练习的时候,你试着一位数组呢,你把AR你c out一下,你看看他其实也是个地值值,因为我们这个变量里边,你看它存的是不是就是个地啊。对啊。诶,它是通过这个地址指向你堆空间这个结构,不是说把这个堆空间这个三个元素塞到这儿了,这个占也盛不下啊,这个它这么瘦,哪能放得下这么大个东西,对吧?哎,他呢放的就是一个地址值啊,所以这块呢,其实刚才呃是看大家的一个呃推断了啊,你通过一维呢,你往这块推它呢,其实是一个地址值。啊,原因呢,就在于咱们,你看你这是个站,你这是个堆,然后呢,我们这个叫A2是吧,哎,你指向过来先呢,是四个元素。哎,四个元素,然后呢,每一个呢,元素又是一个,呃,长度为三的一个一位数组啊,这不就指向一个长度为三的一位数组等等,下边我就省略了啊,把这个地址值是不是自然而然就付给你了。所以你存的这不咱们打印这个A20,不就是看你这块是什么值吗。
07:04
他放的不就是一个地质值吗?而且呢,你看它其实还不光放的是地址值啊,通过前面呢,我们能看到这呢,是一个一个中括号就表示是一维的。这是意味的,然后呢,是一个呃,Int型的,它的这个艾就是在哪个位置呢,它的地址是它。16进制来表示的。嗯,然后再往下呢,是它。行吧,哎,行,这个要清楚以后,诶,那你说我要顺便我打印一下这个事哈,这个不是我们谈元素了,我就打印一下这个AR。是不是也应该是地质值啊?只不过他这个地址值呢,我们来剖析一下。这儿呢,放了俩说明什么?对,说明是个二维数组,二维数组它是一个int型的。
08:02
然后他的地址呢,在这儿。哎,是这个情况啊,那那这块呢,我就把它就注释一下了。哎,我就注释一下了,行,通过刚才咱们说的这个问题啊,我这是一个in的形,清楚以后,那大家我们下边再换一个啊。嗯,这个咱们写一个out吧。哎,我呢,把这个in的形这个写成个一啊。我改成是一个float型。嗯,那下边呢,这个没有变化啊,那问你说下边这块呢,输出这两个又分别是什么这个。是不是还是低脂值?诶对,那它呢,哎,那就是0.0了。来,我们执行一下看看。你看这不还是个地址值哎,是一个一位数组float的类型的地址在这儿啊,这是0.0。
09:03
哎,就是这么个情况。那接着我要是在写这个,比如波尔行啊。这个这个叉类型啊,包括呢,像这个string类型啊,大家是不是都可以类似的去推断了。写个string。哎,这呢我们写一个啊四写一个二,哎,此时呢,我们就我就不把这个所有的都打出来了哈,我就打其中的一个元素了,这呢我们写上一个一,其实是第二个元素啊,再接着AR2,这我们写一个一。一好。找个同学说一下啊,说你觉得这是什么,下边这个是什么。嗯,这个郁金松。这个知道不能看看。
10:04
这个是什么?地址值这个呢。No,哎,挺好的啊,来执行。确实是这样的。哎,这个呢,你看着稍微复杂一点啊,就是它还是一个异维数组,它呢这时候呢是死对类型的死对呢,他把我们这个包括包名在内都给写出来了啊,哎,它是存储在这个位置啊,这个只是个not。能理解是吧。啊,这个清楚以后呢,哎,这个我们看看这个事儿哈,就是这块呢,咱们刚才输出的时候呢,这都叫地质值,然后后边这个就是内层元素啊,内层元素到底是多少,是不是跟我们前面讲的这个一维的情况其实是一样的是吧,就看你具体是什么类型的了啊这个就不用多说了,那关键我们看这个二维,这个二维的这个外层元素,这个外层元素咱们现在呢都是地质值,那下边呢,我们来举这个特殊的情况。
11:04
我们除了这样的去进行初始化之外呢,这不说还有一种吗?就是光写前面这个,不写后边这个。这也是一种对吧,你说这个时候我们如果去输出A23,我写一个一。会是什么情况?哎,大家说是个闹。是对的,看看。就是个闹这个,哎,我我这别用string了,我用string容易误导,你好像说跟string有关系似的,这跟string有关系吗?没有啊,我换成double。来,再来。那还是个闹。嗯,就是我们外层有四个,里边具体每一个元素有几个,是不是我没有指定过,相当于没有初始化过是吧?对啥都没有啊,这是这这是对。
12:00
A23指过来,这呢,西安是有四个。再后边儿没有了。没有初始化过,所以这里边儿呢,暂时还都是闹,为什么是闹呢?因为我们这每一个是不是都应该是一个一维数组啊。数组属于引用类型,引用类型咱们说过,你这个数组元素是引用类型的,默认值不都是no吗?所以这都是闹。嗯,你要这是闹了,下边呢,我们再接着再做一个这样的事儿,我这呢写个一,我这写个零,这个会是什么情况。对,这时候呢,就报错了,报的是叫控制针异常了,哎,在我们的39行控制针异常。因为呢,我这都没有指针了,你再通过它去,再去再找它下边的元素,那肯定找不到了,对,暂时呢,咱们先写个叫报错啊。哎,这样就不行了。行,那这个情况呢,咱们就说清楚了哈,那说清楚以后呢,咱们去总结一下。
13:08
哎,总结一下,那么默认初始化值这块呢,我们有两种初始化方式哈,针对于初始化。哎,初始化方式一,这个咱们举例子啊,就是比如说。比如是这种的哈,就是咱们把这个前面这个值呢,和后边这个值呢,都附上了,这种情况下,我们说外层元素的这个值。哎,或者叫初始化值。为就是我们这个元素的啊,就是外层元素啊,这个我们就直接写叫地址值吧,啊,那么这个时候的这个内层。元素的初始化值。为,那这个时候呢,就完全看你是一个什么类型的一个数组了啊,这个我们就说呃与一为。
14:09
啊与这个一为数组。哎,初始化情况。相同。哎,也就是说呢,如果我们这个内层元素你是个in的型,那我呢,就是一个零啊,你是个float double呢,就是0.0啊,然后呢,呃是一个,呃,这个叉型就是也是个零。波尔型是个false,哎,这个呢就跟它一样了啊,然后下边呢,说针对初始化方式二。哎,方式二就是我们这时候呢,这个没有写的啊,比如说是这种情况,那在这种情况下呢,我们叫外层元素的初始化值,这是多少。那吧。哎,这是个no,然后呢,那一层元素出发值这个多少。
15:01
哎,这时候呢,就根本无从谈起内存元素了,因为这块呢都是个闹,没有初始化过,所以内存元素这块呢,我们说哎不能调用。哎,否则呢,就报错了。大家呢,把这块呢,得理解一下这个事儿啊。
我来说两句