00:01
各位同学,我们再来看一下字符串的遍历和呃,访问和便利,呃,刚才我们根据这个示意图,根据这个内存图,大家应该很清晰的明白哈。字符数字符数组既然是一个数组,当然我就可以把它当做一个数组来遍历,所以说这写的字符串的本质就是字符数组,因此可以按照数组的方式遍历和访问某个元素,也就它仍然是有数组的特点,嗯,同学们看,我们这里呢,又用了一种新的方式来定义我们的字母串,大家看这里哈,这这个我们数组了,还有一种定义方法。我也写到这里来。就这种方式也是OK的,就是大家看我这里写了一个char GR greeting greeting,然后呢,后面有个中括号表示它是个数组,后面有个哈,那么我先给他说一下,在这种情况下,就在这种情况下,它会在内存里面怎么布局好不好?因因为你只要知道这个greeting它是在内存里面是怎么存放的,那后面的内容就一马平川了吗?你就知道是怎么回事了,来,我直接给大家画一个图就可以了。
01:14
我我把这个节画过来好不好,那现在呢,它这个地方没有指定大小,没有指定大小的话呢,它是这样来玩的,跟上老师思路。OK,好,我们先来给大家画一个示意图,Greeting,那么就是GR greeting,好,这是呢它的名称。好,这个名称我给他换一个颜色哈。换一个颜色,因为我往这边挪一下好不好,因为这个空间有点有点不够了,往这边挪一下。认真听啊,同学们。我放,这就是个数组。好,那么这个greeting呢?为了好看,我给同学们标成另外一个颜色,嗯,标成一个白色吧,好吧,标成一个白色,那么这个greeting呢,它是一个字符的,呃,是一个数组的名称,所以它直接就指向我们这个空间。
02:07
它仍然指向我们这个空间,我给它标成另外一个颜色,黑色吧,那这里面有几个空间呢?大家看清楚了,它这块呢,一共有hello hello是五个,是五个空间,五个字符,那我就从这粘取五个过来。争取五个过来。好,我复制一份到这来,好,那在这里面会怎么存放呢?显然哈,第一个呢,就是HR大写的,第二个呢就是我们的E,第三个呢就是我们的L,对,第三个就是我们的L,第四一个呢,仍然是我们的L,第五一个呢是我们的这个O,注意还有一个这种方式呢,会默认自动的在后面给你加一个斜杠零。OK,这点呢,老师专门说清楚了啊,就是这个地方,它后面默认给你加个喜杠铃。因此这种方式你在输出的时候呢,不会有任何的乱码,再说一遍,这种方式会默认给我们加上一个斜杠零,因此这种方式在输出的时候呢,它更方便,更方便,就是说它既没有浪费空间。
03:15
而且呢,它会默认给我们加个行李,因为你上面这个方式有一个问题,这个七七呢,你其实有几个空间是浪费了。对不对,而下面这个方式你虽然用完了,但是呢,你后面这个是未知的,有可能是未知的,就如果是针对这个图的,它后面是个未知的东西,所以说呢,这种方式呢,显得就更加更加好用了。对,这样就更加好用,好,那么现在我们来来看一下它怎么怎么怎么输出呢?给大家演示一个,我们再写一个小案例吧。这是我们的第一个案例,我们再写第二个案例。这差数组的写字哈。还是我们char l demo02。DEMO02,然后我给他改一个O缀。
04:04
那这边呢,我写一个include ST dl没问题吧,同学们VO的主函数。然后呢,我简单一点哈,我简单一点,直接就从这边把这个拿过来给他输出一下,你们看一下就行了。来看一下print f。还是用一个斜杠,我这直接写greeting。Greeting等于百分号S,然后呢,输出greeting。是不是好,为了好看呢,我们get一下。来,观众朋友,我们运行之。我们运行过来,你你们可以看到不会有任何的乱码,因为它后面呢,会自动加个斜杠,零表示字符串的结尾。大家看是不是没有任何问题,好这个知道了,那知道这个过后呢,如果说你想把里面的元素一个一个的取出来怎么办呢?这个我就说一下就行了啊,求出它的长度,这个长度返回是五,因为你一共有五个字符,有效字符哈,有五个,然后这边这边会输出五。
05:07
呃,如果你要取出单独的某一个,你看这我写的字符串的第三个元素,呃,第三个字符是GR2,为什么是二呢?因为它的下边是从零开始的,012,这个讲过,数组都是满足从零开始做下标的,然后这边呢,我可以用for循环一个一个的打出来,这我暂停一下,好,这个呢,我给大家运行一下就可以了,好不好,这个老师就不不再多说,因为这个比较简单,我直接给大家运行到这里。便利一把号。好,这个时候这个输出语句我们要写到下面去。我们写到这吧,好不好,写到这就可以了,那大家看到这里面呢,还有一个小问题,什么小问题呢?因为我们使string令它是原先讲过,它是属于俊。使H这个头文件里面的内容,所以说我们把它还有一个system是不是暂停的指令呢?暂停指令是在哪一个文件里面呢?是不是在s DD lib里面去了。
06:09
是不是好,这样就OK了,呃,OK过后呢,这个我就可以不要了啊,我们不能写两个好,各位同学我们运行一下看效果。这个输出我先前已经讲过了,是不是这个应该输出几呢?这个应该输出五,这个应该输出几呢?同学们,这是第三个字符,那就应该是L,是不是L啊,应该输出一个L。这边应该输出什么呀,这个呢,应该便利的输出,我就不打不换行了,我这样输出这边应该分别输出一个H。对,一个E一个L一个L一个对吧,我们运行一下。运行。运行起来过后呢,我们可以看到效果跟我们想象的是一样的。
07:01
对不对,你看这里输出了哈,这边是五这边呢,把L输出了,哎,这个没有没有换行,看起来比较怪。我在这儿再打一个换行符。斜杠N。好,我们运行一下。运行。对,那运行起来过后呢,我们可以看,现在看的应该更清晰一点了,你看第三个字符是L,后面是哈,一个一个的字符编辑出来了回车。好,各位同学,便利这块我们就说完了哈。那紧接着我们再来看字,现在做一个小结,字符串的表示形式呢,现在我们看到已经学了几种啊,学了这么几种,第一种这个。是不是刚刚讲过的还有一个呢,用这个大括号给它来赋值。对不对,好,那么还有一种方式呢,就是用字符指针,也可以指向一个字符串,比如说这个案例。
08:01
Char,这个好,我呢,现在给大家再举一个例子好不好,再给举个例子。好,这个案例呢,我们就放这,我们再新建一个案例吧,因为这个案例太多了。字符数组是比较相对比较麻烦的一点哈,所以说老师呢,这里多给大家举几个例子。同样我把这个勾掉。改成C。好,然后我们引入一个头年include std。The void。转述。对,然后在这里呢,我们这样写也是可以的,这个呢,这个这个如果我们用个指针指向一个字符串,它会怎么处理,待会儿我画一个内存图啊,这里使用一个指针。十寸,这个十寸就是已经是指针了,你可以理解成这样写的P。对,它是一个指针,它是一个指针,它指向指向一个字符串,字符数组,这样写字符数组。
09:04
那这个时候呢,我们先来看一看它输出的内容是什么样子的,再说它的内存布局好不好,来不着急啊,因为这个地方,这个地方呢,我们我们要给大家输出一下p string。十句指向的内容,指向的字符串等于我给大家说出来。那怎么输出呢?你就直接写个P10STRING就可以了,为了好看呢,咱们给它掐一下。那各位同学先运行一下,看看哈汤姆能否正确的输出运行值,把前面这个先注销一把。对不对,先注销一把。运行下。那运行过后呢,我们会可以看到它输出的应该是hello,汤姆。看对不对,效果哈汤姆没有任何问题,也没有任何的乱码,那现在问题又来了,说老师,那这个东西在内存里面到底是怎么存放的呢?好,同学们,仍然给各位同学画一个内存图。
10:02
好,这个图很重要哈,来,我们看看他在内存里面是怎么布局的呢?来,走一个。同样它有一个内存空间是不是好,那这个时候它的形式呢,就跟我们那个发生了变化了,它是这样子的,各位各位同学,为了因为这个hello,汤姆太长了哈,汤汤姆实在是太长了,我就写简单一点好不好,我就用一个哈就行了,可以吗?没问题吧,因为太长了,我这画起来很吃力。好,那现在我们可以这样看了,跟着老师思路啊,首先呢,在内存里边你会有一个指针变量,它叫p string。OK,那么这个P10G呢,因为它是个指针,所以它并不直接指向一个数组,注意听它会怎么样呢?各位同学,它呢,先有一个空间。好,认真听哈,认真听这块是稍微有点棘手的。那这是一个指针,它指向一个空间,它指向这么一个空间。
11:05
对,因为我们知道指针它实际上是指向一个一个空间的嘛,这个空间呢,呃,大家看啊,不着急,我们看它本身是有个地址的,比如说它的地址是0X,这个画错了。指针肯定指针是是一个数据类型对吧,说他自己有个地址,这是很很好理解的,0X1122。假如他有个地址在这里。能看懂吧,那么那么我们这个哈,大家知道哈,是个字符串,如果是个字符串的话呢,它其实是这样存放的,注意听。它后面呢,会默认也给我们一个斜杠零,好,这个有点不够了。好,我这边挪一下。也就是说,当这个H是小写的H了。也就是说你们看到的这个哈,这个字符串呢,在内存里面其实是这样存放的,它默认会在后面也加一个斜杠零。
12:04
它默认在后面也会加一个斜杠零,那当然有同学问了,那这个怎么弄的呢?大家看我们这个这个数组,我们我们这个哈,这个数组是不是它也有一个地址啊,就是这个H,这个H是不是它的第一个元素。第一个元素,它有一个地址,也就是说这个地方有一个地址,听听清楚了。那我给他画一个,比如说它是0X1166,这个1166地址是哪一个呢?就是我们的第一个元素的H,它的一个地址,因为你是一个字符,它是一个数据,它当然有自己的地址了,说的这个很好理解,然后呢,这个地址呢,会存放在这里来。理解什么意思了吧,那换言之就是这个指针呢,它其实是从这里指向这个空间的。
13:02
当然,它指向我们这个空间的第一个元素。哦,我仍然画一个线,它是这么一个关系,大家看清楚了,它是这样子的啊,再说一遍,首先呢,这边他做的时候,他先开辟一个内存空间,这个内存空间里面呢,会有。这个元素会有各个元素。那么它的第一个元素的地址就它。是,假设是0X1166。啊,那么这个地址呢,它会放入到我们这个指字符指针的这个空间里面去,当然你是一个字符,你是一个指针,你也有自己的地址,说它的内存是这样子的,那我问同学们一个问题,这个E有没有自己的地址呢?也有哈,这个一的地址呢,我问一个同学,他的地址是多少,能告诉老师吗?我们前面是不是讲过,嗯,数组的是连续分布的,所以说这个E的地址呢,其实就是在H这个基础上加上一个字符占用的空间。
14:07
大家还记不记得在C语言里面,一个字符占几个字节?占一个字节。因此它的地址其实就是一。后面以此类推,这个就是后面这个L,它的地址呢,就应该是八。他的地址就应该是八,以此类推,号我就不一个个去选,如果你要写全的话,就应该是。如果他们写是全的,应该这个是九。这个是九。明白,那么这个O的O的地址呢,就应该是十了,十按照16定值来说,这个九变成了A。对,后面还有一个这个斜杠零,它也有个地址,那么就应该是B了。所以说他他倒时间这块内存呢,实际上是这样分布的。OK,然后呢,他把这个就是第一个元素的地址附给我们这个指针的这个空间的这个指它这样子的明白了吗?好,所以说它这个道理咱们就讲清楚了,看我这写的很清晰啊好,C语言对字符串常量hello只是按照字符数组处理的,在内存中开辟一个字符数组来存放字符串常量,这个就是字符串常量程序在定义字符串指针变量使string时,只是把字符串的首地址,即存放字符串字符的这个首地址附给了str这个我我这我这改的名字叫P了,对不对?
15:38
叫P。叫P,好,这个内存图是相当的重要哈,相当的重要,也就是说你要彻底理解它是怎么回事,你要明白是这样一个流程,那么同学们通过这个地方,大家有没有发现这种方式指向一个字符串,和上面这种方式指向字符串是完全不一样的。
16:00
是完全不一样的,这个能理解吗?好,明白这个道理了,那么接着我们继续来看它们的区别,那现在呢,我们有必要跟大家讨论一下,使用字符字符指针变量和字符数组两种方式表示字符串的一个讨论。就也就是说现在呢,老师想花一点时间来讨论什么呢?讨论上面的这种方式和下面的这种方式,它的区别在什么地方,而且呢,这是我们面试官最喜欢问的问题,也是我们在考级的时候。难点的一个地方,这是一个比较难的地方哈,好,那么先跟大家说,第一个字符数组是由若干个元素组成的,每个元素存放一个地址,而字符指针变量存放的是地址,大家看是不是刚才老师说的存放的是地址啊。而你字符速度是直接指向这个手离子了,可以这样去理解,好,然后呢,同学们可以看到。
17:03
绝,它就是绝不是将字符串放到字符。指针变量中,也就是说大家不要这么去理解这句话的意思,就是说大家不要认为我们这个里边。就大家不要认为我们。这个。就是。我们这个变量。字符串里面直接这个地方就直接存的是就这个里边存的就是这个,这个蓝色地方存的就是内容了,不是的。就大家千万不要这么去理解啊。撤不回去了,就说不要理解成不要理解成什么呢?不要不要去理解成这个里边存的就是我们的H。啊,存的就是我们的,一但不要这么去理解就可以了。这点请大家一定要高度的重视,高度重视,那有些同学可能会问说,老师,你凭你,你凭什么敢这么肯定它的内存是这样存放的呢?我可以给你们试一下,我可以告诉大家,我可以打印出它的地址。
18:11
我可以打印出它指向的这个地址,还可以打印出这个指针本身的地址,但是作为一个这这个上面这种表示形式,你不管怎么打,打出都都是同一个地址,你们可以来示一下,我给大家演示一下哈。呃,啊,这个就不用演示了,大家这个图已经画的很清晰了啊,不用演示了,咱们直接往下走就行了,第二个。对字符数组只能对各个元素负值,不能用下面的方法复制,大家看,这种方式就是错的。这种方式就是错误的。下面这个方式呢,是正确的,是可以的。为什么呢?我们来看一下这两种方式,哪个是对,哪个是错啊来,我给大家呢写一个案例。同学们可以看到。我在这呢定义了一个使俊死罪,但是你会发现我给他附一个字符串的时候是错误了。
19:08
为什么?哎,现来看这种方式可不可以。这种方式是OK的。因为我这种方式的话呢,我实际上是找到它的第一个元素,把爱给他放进去,但是这种方式为什么是错的,你们知道吗。你看这地方它会提示你,他说表达式必须是一个可修改的组织,为什么呀?因为如果你这样去做。而这个地方有一个前提,就是施俊,它是一个什么呢?它实际是实际上实际是一个常量。哪个是个常量,使俊它是个常量,如果你这样做的话,相当于做了一件什么事情呢?就说这句话,如果说可以的话,相当于你做了这样一件事情,我。这个地方特别不好理解啊。同学们不要小看这。
20:01
其实是一个难点,一般的老师讲到这呢,就讲的很快,一下就过了,其实你们根本就没有听懂,这地方是一个难点啊,这个难点我。我还是得用。这个来给大家转一下乱码哈。注意听一下。这个地方为什么这个不行,而上面那个行。只要是初学者,一定是在这儿,肯定是要蒙圈的。来看一下为什么这个方式啊,这个方式我们还是画一个内存图来帮助同学们理解,你看,呃,如果这种第一种就是当我们代码执行到这的时候。你可以,你可以这样设想,就相当于有个菌。有个string干什么呢?它指向了一个空间。这个空间已经给你划分好了。但是你没有赋值,没有赋值,这但是这14个,这14个这个地址空间可是给你分好了啊,就这边呢,有14个空间。
21:05
好,这这块就14个啊一个,哎,这太多了,太多,我这整不了那么多,我我我整十个吧,整十个啊,这这个空间现在里面这个东西是什么都不知道。诶,这个里面这个空间是不知道是什么东西,这个呢,也不知道是什么东西,这个也不知道。这个也不知道好,那么这个里面现在有几个,有几个呢?有十个。好,这是又一组。好,我们再来一组。这是九个了,对不对,还差一个。还差一个呢,再给他一个就可以了。还差一个。那这个时候呢,我们这个string。我们这个菌就指向这这个地方了,当然是指向他的这个手地址了,对不对,指向他了。换一个颜色,换一个颜色,那这个时候了,那如果说你这样去做,他会出现一个什么情况呢?我可以告诉大家,它并不会像我们想象的那样说,哦,这地方我给你填个H,我这地方给你填个填个E,不会的,因为我们前面讲过,这是一个字符串常量。
22:15
他上来过后,他就会,他就会给你马上分配一个空间了。这里面的值其实都已经给你放好了。前面是。前面是哈喽。六个呃字符,然后这边呢,还有汤姆。对,后面还有还有一个汤姆。三个字符啊。三个字符。诶。这个地方我要测一下。这个地方应该是有,哎,这个地方有有没选中啊,一个两个三个好,这边呢,同学们可以看到它会有汤姆。呃,这地方我改一下汤姆。这个嗯,这个这这个不去画了啊,这有有点不好画啊,最后注意最后地方是个斜杠零。
23:04
七杠零啊,这个地方是汤姆改一下,看看能不能改好,T可以改。汤姆汤姆,汤姆汤姆。好,这样就写完。那也就是说,当我们代码执行到这一块的时候呢,其实这一个相当于已经给你分配好了,如果你让这个10G等于它,其实你的本意是希望它指向这块。那就完蛋了。因为这个是不允许的,因为我们讲过使俊它实际上是个常量,就在这里实际是个常量,常量是不可以改值的,同学们还记不记得我们前面讲过,你这样相当于说让这个十寸指向另外一个空间,那这个空间怎么办?没没有,没有用了,而且本身这个十寸是个常量,它不允许修改,所以说你这样做呢,它就会报错,因为你你这样做的本质就是相当于让十寸指向另外一个空间,就改变了这个层量,因此它直接给你报错,所以说报错误是什么呢?大家看这个错误非常的有特点,就说表达式必须是可修改的组织。
24:08
你常年不可修改啊,所以说他就报的是这个错,但是为什么这这样子是可以的呢?说老师十顺零写个I为什么可以呢?因为你这样改的话,其实本质是不让它改变它本身的地址,而只是找到它的第一个元素,在这里面填了一个什么呢?填了一个I而已,这个当然是OK的。这个当然是OK的,好,各位同学我讲清楚了啊。我讲清楚了这个原因,我这有个示意图,画清楚了好,最后还有一点,对于字符指针变量采用下面方法是可以的,比如说我这里有个差星,甚至我这有有值都是可以的。比如说我写了一个。Yes,然后呢,我让这个I指向哈汤姆,这个是可以的。为什么这个又可以了呢?先来看,先看可不可以。先看可不可以来,各位朋友,我先把这个代码放过来。
25:03
大家看这个地方有个A,它先指向了耶,然后让这个A指向哈罗汤姆,你看这方是没有问题的。对,那你输出肯定是哈罗汤姆,不再是夜市了。这个我我不用去演示啊,这一帮你在输出的时候,这个A就变成哈罗汤姆了,不再试一试,为什么这个可以呢?来各位朋友,咱们仍然分析一把好不好,这个做一个比较,你一目而了然。一目了然,但是这个确实是一个难点,只要你把这个听懂了,同学们,那这个说实话还是还是非常OK的一件事情呢,那这个为什么这个可以呢?好,那原先这个同学们看我们,我们前面讲过A,它其实是个指针变量,所以说你可以理解成一个什么感觉呢?你可以这样理解。相对于说原先有一个A指针。对,这个A指针,它指向那个夜的空间,这个页空间我粘过来一份。
26:02
好,假如这里面呢,有有几个空格呢?有四个空格,因为yes再带一个回车,是不是四个啊,第一个,第一个就是Y。Y第二个是E。第二个是一。第三个是S,最后一个是七杠零。对。这个大家应该能看懂吧,这个应该能看懂,好,我把这个往后面的整体挪动一下哈,因为这块空间有点不够了。往后面挪动一下,那挪动过后呢,同学们看,因为这个A啊,它是一个指针,所以说其实它是这样子来玩的,同学们看。他怎么做的呢?他他自己肯定是个弟子的,他嗯,他是。它是这边指向这个,我就不去再去往里面写值了,因为时间的关系,我就偷个懒了啊,相当于说它指向他,当然他自己是有地址的。他地他自己肯定是有地址,比如0X1122。
27:02
1122,然后这里面呢,有个地址指向他。好的,那这个A呢。这个A显然是指向他自己的这个空间,是不是很好理解?那当你当你做了一个A,等于哈过后会做一个哈,汤姆会出现一个什么情情况呢?他会这样子。这这个地方它仍然是不改变的,0X112是不会改变的,它只是让这个地方指重新指向这个位置。就完了,当然有些有些同学就会问说老师,那这一个yes,这个地方会怎么办呢?这个地方就成为这个地方就就没人用了。这样就没有人用了,就会被回收了啊,你就去及时的回收他,这个时候相当于说什么呢?相当于说只是把这个地址改向了另外一个地址,说老师你怎么知道呢,我可以给他试一下啊,我可以给同学们试一下,你们看看是不是这样子的来吧。我给大家演示一下,看看是不是这样子的,首先我打几个地址。
28:03
我给大家做一个演示,PTF,注意听,这块确确实实是个难点。好,A等于字符串先输出来。西恩。喜恩,那么这个时候呢,我输这个好,我问同学们现在输出是什么,是是不是哈喽汤姆呀,这个没问题吧,好,然后。我,我要说的事情是什么呢?各位同学,我在这儿。我在这个之前打印出A本身的地址。还有一个A指向的地址。我先给同学们说一下质量地址,这样说A本身的地址是不是就是这个A啊啊,这是个。地子符这个A,然后呢,它指向的这个地址是不是应该写写成A啊没问题吧,好,等到他他把这个汤姆改了过后呢,我再打一下。西干恩。
29:00
这边也打个写个,我仍然说出A本身的地址和A指向的地址,我问同学们一个问题,我问同学们一个问题,它本身的地址是不是不会不会变化,诶这个我少写了一个百分号P。这边也稍写,写一个百分号P。各位同学,我想请问大家,请问大家就是这个地址会不会变化?这个是不会变化的,刚才我不是说了吗,但是这个指向是可以变化的,它第一次这个A先指向的是yes。这个。字符串的首地址,等到它改成汤姆哈汤姆过后,这边这个A就是这个地方指向的地址变了,但是呢,这两次你会发现A本身的地址是没有变化的,最后输出time,看hello time我们来运行一下,同学们注意看效果。好,运行过后呢,我们可以看到这个效果跟我们想象的是完全一样的好,你看是不是老师没有骗大家呀,你看A本身的地址是不是没有变化,但是。
30:05
但是你看A第一次指向这个夜视地址是00F6700C,第二次指向哈汤姆过后是00F6702C。最后输出的是哈汤姆。没有问题吧,好,所以说同学们这个图啊,就是同学们老师给大家画的这个示意图是非常非常重要的。很多同学学C语言,在这个字符串这个地方,学字符串各种表示形式的时候,就一下蒙圈了,原因就是没有真正的搞懂,那现在呢,老师就把这个说清楚了,最后一句话处理一下就可以了哈,最后再总结一下,如果定义了一个字符数组,那么它是有确定内存地址的,而第一个字符指针变量呢,它并未指向某个确定的轴串,并且可以多次复制,也就是说。如果是指针变量呢,我这个A可以多次赋值,但是你这个字符串呢,它是一个常量,它就不能改变了,所以说这方应该说的更清楚,它字符它有去内地值,相当于是个常量,即。
31:09
即什么呢?这个字符数组名,名称名,字符数组相当于是个什么呢?名是一个常量。它是不能改的,而定一个字符子程变量过后呢,它并并没有指向某个确定的字符数据,而且可以多次赋值。对,也就是说这个针对字符指针而言呢,它这里面这个玩意儿。这是可以修改的,你给他一个什么地址,它就指向一个地址,你它既可以指向yes,他也可以指向另外一个产量。OK。好,各位同学,那么这个细节我们就讲完了,大家看看呃,能不能理解呀。是有一点难度对不对?但是我们学一次,把它学清楚,学透肯定是一件好事。好,各位同学,我把刚才讲的内容呢,做一个简单的梳理,来跟上老师思路,刚才我们讲了哪些内容呢?首先给各位同学讲了一下字符串的遍历问题。
32:11
是不是给大家讲了一个字符串的便利问题?字符串的遍历问题。那这不算遍历呢?我们实际上是在这举了一个案例的。是不是在这举这个便利问题的,还有印象不对吧,这边有个for循环吗?这边就是便利它。便利。好,我把这个呢给各位朋友板书到我们的笔记中去。对板书的笔记中去。然后最重要的就是这边有一个有一个图来说明了它的一个含义,就是上面呢,我们讲讲这个greeting的时候啊,它对应的这一个内存的一个布局是尤为重要的,我把这个图给他拿过来,具体来说就哪一截呢这一句。我把标一下哈,就是这个。
33:02
它对应的内存图是在这。这个是大家要非常非常清晰的好吗。这个我是不是画清楚了,好,这个对应的图放到这里。好,写到对应的一个内存啊,对应的一个内存分析图。好,我也给大家整理到这啊,这稍微有点难度,大家整理好。放这大家一一目而了的就是这个greeting到底是在内存里面怎么布局的,好,这个说完了,说完这个以后是不是就跟大家讲了字符串的几种表示形式啊,来梳理梳理到这。字符段的表示形式呢,有这么切?对,有,可以用数组,也可以用指针,当然我这里做了一些简单的梳理。好,放这第一个。对吧,然后这边呢,有这种形式。对这种形式,诶,嗯,我看一下。CTRLZ,那这个应该是啊,这这里面有两种形式这样标的。
34:05
来一个标号对吧,那这边呢,还有一个这种形式。对这边呢,也对他做了一些说明。那这个时候呢,咱们又画了一个图,还记得吧,就是如果是以指针的方式来表示,它的示意图是什么呢?来有一个对应的示意图。内存就是。对应的内存布局图。很重要哈,这个很重要,那么这个图呢,我给大家也拨拉到这边来,在哪里呢?应该是在这个位置,没有没有画错的,应该是在这个位置。是不是就是如果你在你这写了一个hello,那么他在内存对对应的这个图呢,是这样子的,非常的重要哈,这一大块。这一大块,好的,我把这个图呢给大家放到这里来。一目了然哈,一目了然,这个说完了以后,是不是老师就给大家讲了一下这两种方式的一些区别,和它的这个相同的地方对不对,好,我把这个呢给大家放过来就可以了,很简单。
35:10
这里面有一些内容哈,来放这。他们的一个比较说明那么三点。三点。好,删减完了过后,这边有一些代码,我给他板出过来,嗯,对,这边有一个这样的示意图啊,这样的一个。111段代码放过来,插到一个表格里面去。然后呢,这边还有一个下面的另外一种复制方法,就这种复制方法是OK的,然后呢,我们也画了示意图来分析为什么这样是对的,为什么那样又不对。然后这边有分析过程,分析了分析,呃,分析了上面的。这个这个结论。对不对,好,同样我们给它来一个小标号。对,那么这个结论我们是怎么分析的呢?其实是在这边。
36:03
是不是这就是我们的一个分析示意图,一定要认真的去看啊,同学们。好,各位同学,我们就放到这里,那放到这里这个就讲完了,最后呢有个小结,这个小结呢,其实要不要也无所谓啊,那写到这吧。这个还有一个小节。第五点。好,各位同学,关于我们这一个字符串的表示形式,还有它的这个内存布局,我们就跟大家讲解到这里,大家一定要认真去理理理解啊,这一章特别重要,而且呢相对比较难。呃,一定要把这个图搞清楚,各位这讲我们就到这里。
我来说两句