00:01
啊,那首先我们这这里面整个的我们需要知道一件事就是什么,就是内存都是物理上分配好的一个存储单元,每一个都有唯一一个编号,我们称为什么呀?内存地址是不是啊内存地址那在这个32位操作系统中全是什么呀?全是什么大小的。四个字体大小,然后在那个64位操作系统中,全是八个字节大小。那好,那我们看一下这个指针,什么是指针。指针也是一种数据类型,指针变量也是一种变量,知道吧?啊,对应的这个东西啊,它是一种数据类型,只不过是在基本数据类型前面加,后面加了一个什么呀星是不是啊,指针变量存的存也是个变量,这个变量就是怎么这个只能发生改变嘛,是不是啊,如果这个指针变量存的是个什么东西啊。指向地址是不是指向一个变量的地址是不是,那前面个就么就指向变量对应地址的内存空间,或者指向的是一个什么呀值啊就这样的操作啊,那我们比如说定一个in的星等于按na,这里面就是什么将A的地址复制给一个指印类型。
01:06
啊,我们也可以通过指针去间接的改变一个值,就是什么,在指针变量前面加个星,然后等于一个具体的值,就可以改变我们一个变量的值,然后指针的大小,这里面前面已经说了,说在这个呃测试呃,就是通过赛道测试。总得到四或八三十二个平方是四六十四位情况是八是不是,那咱们好像在在上一天少演示点内容,什么内容,先把这个代码先注销掉啊。带大家演示一块内容,就是PTF。百方2D斜杠N,然后是逗号一个,再of int星星,这是怎么二级是不是啊,二级针咱们那个讲的时候没给大家去演示,只是给大家过了一遍,然后是三级指针是不是?那然后再来个四级指针,那就太无聊了,咱们再写个什么呀?啊的类型。Avoid的行类型啊,咱看一下这几个值得到结果是多少,调试开始执行是不是都是四啊?咱们之前说了,所有的指针类型大小都是四,无论你是二级值、三级值针,还是这个Y的类型的指N大小都是四啊,这是我们需要知道的一个问题。
02:13
啊,还有控制针和也指针的问题,也指针就是怎么呢?就是我们给指针附了一个什么呀,一个值,这个值我们不不是我们程序中自带的一个什么一个变量的地址,所以说就成为这个页指针操作页指针可能会出现这个错误是不是,但是你读取这个指针的时候怎么的不会出现错误吧,就是给一个呃指针赋值的时候不会出现错误,但是你要操作的情况下可会出现错误。那这里面还有个什么,还有一个是空指针控帧就是什么,就是等于空的那个地值空的就是什么功的,就是我们系统中定义了一个Y的星类型的常量,这个值为零,那这个零也是我们系统中一个不可操作的内存空间啊,零到255都是不可操作的啊,但是我们赋值控制是是有意义的,可以用作于程序的判断是不是啊,然后我们后面讲的什么讲的这个开闭对空间的之后,然后就可以判断这空对空间是否被释放掉,释放掉之后我们置为空,那就是你在判断的时候,如果为空的情况下,我就不用再释放掉了,是不是。
03:13
这后面讲的内容啊,然后这也指针呢,一般情况下可以怎么的,可以是。我的程序如果操作别人程序的什么呀,内存里面的数据就是怎么去自行算访问野指针,是不是在访问野指针的时候,比如说你去修改别人的数据是吧,做一些入侵呢,或者做一些外是外挂,或者是做一些这个修改内存的一些东西都是可以的啊,两种都是有意义的,那我们再看下面一种,下面一种什么是。Y的类型的指针,我们又称为什么呀,万能指针,万能指针可以存什么呀?可以存这个是其他的所有的这个,呃,变量地址是不是,那其实这里面可以大家再拓展一点什么呀,比如说我定一个是。In的类型的。In的类型的A等于十,然后差差星P等于na。
04:00
这样会不会出错?不会出错,那比如说我在使用的时候,你看一下这个怎么使用呢,PRT。啊,给他先赋值啊,先那个星批如果等于100,这样能直接赋值吗?可以我们再打一下PTF,打印一下谁啊,打印一下A的值,百分号D100分号D斜杠N,然后是做号一个。A,我们看一下这个A的值改没改变啊,把前面这三行注销掉。都是开始执行。是不是100啊,那我再改一个数呢,改成这个是1000有问题吗?诶,为什么100没问题,到1000之后就有问题了呢?差的取值范围多少你忘了吗?是不是到二五之后,他就来回怎么的滚了吧,是不是那滚了,那这里面我我想怎么的想,如果是他能接受1000的情况,我是不是可以做一个什么操作。
05:02
强转,强转是转谁啊?转对应那块地址内容,我在打印A的情况下看有没有问题,调试开始执行。是不是以前没有问题了吧,这里面跟大家解释,就是所有的类型,就是不是不是就是这这是什么变量。呃,是一个变量,可以复制为所有类型的这个指针类型,但是你要操作对应的那块空间的情况下,你要转成相对应的类型,是不是这里面不止万能指针能可以这样操作,是不是其他指针也可以这样操作啊啊,那所以说你要直接用的情况下,你注意一下这俩类型的一个转换,如果是你要不想直接用,你可以怎么着强转之后再用,这里面是不是就没问题了,这就是这个操作啊,就是我们对这个万能指针这块就引出了一点新内容啊,是大家需要了解的,不是需要大家掌握的,是了解的,所以说你在使用的情况下,还是它是什么类型你就什么类型,知道吧,要对应上,这样才好操作,知吧,如果你对应不上的情况下,那就不好操作了,但是数组这里面也可以这样操作,知道吧,数组也可以。用不用再拓展点啊。
06:02
啊,可以啊啊好,只要你不迷糊,我就给拓展啊,啊等于什么是AR,等于个数组,比如说这里面是AR,然后是让它等于一个。十。然后等于。123。然后这里面是AR。呃,我这样改值可以吗?就是用这种方式改值可以吗?可以吧,有问题吗?改的是哪个值啊?是不是?NR0的值调试开始执行。打印值是1800,我想改变下一个值,需要怎么操作?星,然后是这里面需要强转,必须需要强转啊星P,然后这里面怎么样P怎么着加一啊括回来,然后让它等于2000,看可不可以啊,这里面打印一个一的值,调试开始执行。
07:06
行啊,这这里面转错了吧,应该把这是插过来放在这了吧,啊这样是不是才可以啊,是先把前面类型转换之后再加一个一,然后再去看一下这个值调试开始执行。2000是不是没有问题啊啊,除了这种写法之外,我们还有第三种是星,然后是括号,括起来是。印他。星。然后是。括号,呃。P。然后是。012,然后让它等于。3000这块能看懂吗。啊,这块是我们也可以把这块起来啊,这块起来去操作。的话,这里面括起来。我看如果是这样的情况下,好像就是。这样就不行了吧,我们看一下,我先看一下这个值,我想改变谁啊,改变这个是数组下边三的这个值,如果这样写可能不行啊,我先看一下调试开始执行。
08:04
啊,Sorry,这里面下边为二啊。调开始执行,就是第三个元素这个值应该不行吧,是不是都会挂掉,为什么挂掉呢?这里面应该写多少啊写。呃,因为这个它的优先级别会比这个强,转优先级别要高一点,知道吧,啊,所以说这个是我这里面写的情况,应该是写多少呢是。呃,3412是不是。3412还是八呀零呃是第一个,然后是。四八是不是应该八呀,啊,应该是八吧,嗯,调试开始执行。还挂掉。我看一下这里这这样,这如果是这样情况应该怎么转啊,首先是前面加星是对的是不是啊,那这里面是不想转的情况下,我直接写这样写行不行是P。P8。
09:00
啊,批发这里面是。P8本来就是1010010P8,对对直行P8试一下调试开始执行。624。P8它是只只读一个字节啊,P8只读一个,然后再怎么的再。强转。面的行。他每次先先转都是什么,都是强转的是。不是,这是个什么,这是个值了,是不是这是个值了,所以说不能强转了是不是啊,咱们就需不用这种了,是不是,咱们就是再取地址再强转,那就没有意义了,反而这个是更麻烦一点了,那你知道这两种就行啊,这是因为这是个差类型,所以说你要强转情况下,你是不是如果是一个不同类型,这里面转起来是不是就麻烦一点了,是不是,所以说你知道这个类型要对应上,要么就用word类型是不是也可以啊啊,这个类型里面是对应的是几个是这个是一个字体大小是不是,你如果这里面是不是可以查呀,查对应的这个位置,然后去改变那个值,就用这种方式就行啊,咱们第三种方式先不用了啊。
10:04
那这是对这块的一个简单拓展啊,那cost cost的这里面我给大家做了是四个值吧,这里面比较少是不是啊,你先不用看这里面刚刚做了哪几个,第一个是通过。通过指针去修改一个的指向的变量是不是,怎么去修改知道吧?啊,通过指针就可以修改了,然后第二种是cost的修饰in的星,这叫什么?这个叫指向常量的指针是能修改地址,不能修改值是不是,然后下面是Co的,如果修饰一个指针变量就称为叫什么指针常量了吧?啊,那是能修改值,不能修改地址,还有是一个Co修改,呃,不是Co修饰int星,同时也修饰。一个指针变量是不是我们称为叫什么啊,常量指针叫常量指针啊,是什么也不能修改是不是,但可以通过二级指针来修改,大家优化极指针修改过了吗?没有啊,你可以去课后练一下这个内容啊,那然后看一下指针数组,那个数组名就是一个数组的首元素是不是,然后这里面是这个是一个常量,这个值不能更改是不是,那我看那个咱们这个上天讲课内容是哪个内容,把这先注销掉。
11:17
是这样,是这个是。And a加一。这个是不是之前跟大家讲过啊,我是不是在这个前两天就给大家讲过,这是不是一个数组啊,数组如果在取地址情况,再加一是跳过了整个数组的大小是不是啊,是不是这样想过,比如说这如果是一个二位数组的情况下,那这里面就跳过了整个二位数组大小是不是,如果是这个数组,它本身就是个地址,你再取地址是不是一个什么了。二级针了吧,二级针再加情况是跳过整个一个一级针的这个大小知道吧,啊所以说这里面这个问题啊,大家注意点啊。啊,那如果什么,如果是and ar0。再加一呢,这个大小多大呀。这是大小哥啊。
12:00
嗯,那好,那我打印一下,打印一下什么,首先先打印一下这个是。百分号D,然后是斜杠NN,然后是。这是地址啊,这是地址情况下,我们用这个是P啊,然后是逗号and a。Yeah。然后再操作一个是AR,零加一等于这俩值。调试开始执行。看差几个四个是不是这里面这个前面不跟大家说了吗?这个加一就相当于什么,相当于这个是这里面变成数组,这里面变成几啊一是不是这个之前跟大家说过吧,嗯,说过啊。好,这是我们对这个数组加减的操作啊,那个比如说让一个指针指向数组,是不是这个指针就可以当做数组什么呀。这个手机手地址吧,是不是啊,可以操作,但这里面也有区别的,什么区别啊,我用数组通过set off,我用数组名能求出来这个什么呀,数组的大小是不是,但是你通过什么呀,通过这个是。
13:05
呃,这个指针是找不到数字大小的,它显示是一个四,这个四是什么固定的吧,为啥呀,因为这是一个指针类型大小是不是啊,然后咱们指针操作情况下,可以怎么样相加相减,是不是指针的加减操作。怎么加操作呢?是指针加上一,就是跳过了一个这个数据类型大小,是不是,比如说你是硬的类型大小,跳过几个内存大小啊。四个吧啊是不是啊,但是我们这里面加的是几啊,是一是不是,那你知道两个指针相减的情况下,那减完结果是几啊,两个相同类型指针相减结果是几啊。来来就懵逼了,好,我也来一个啊,是这样,比如说咱们这是一个数组。Int类型的。星PE等于。哎呀。然后是int类型的星,PR等于。
14:01
AR,然后前面加上一个。干。那这两个是什么?是这个是两个不同的指针嘛,是不是我定一个int类型的这个lengths让它等于什么?等于P2减P1啊,然后得到结果是多少啊一,那这个一就是什么呀?就是两个元素相合的int类型大小是不是,那我让一个地一个什么一个这个地址减去另外一地址,就是它俩隔的相同元素的这个大小是不是个数元大小的个数啊,比如现在类型,那比如说有五个,那隔它俩内存隔的是多少个,20个,但是他俩隔的这个元素个数是几个,是五个啊就这意思啊,答一下啊,这里面是逗号length。调试开始执行。答案的是不是一样啊,是相隔的元素的个数,根据这个什么有关的类型有关是不是啊,这是咱们讲的内容啊,这里面其实有一点这个没给大家讲,怕给大家弄混了,等我找一下那个内容啊,这块这块没给大家讲啊,这块是怎么,如果你旋转成印的类型情况下,它讲完值就是四了,是不是就是那个元素个数啊,没给大家讲,你也不需要知道这一点,也不需要强转,没有任何意义啊啊这个是我们这块,而是下面什么,下面是指针数组,那什么是指针数组啊。
15:18
指针数组,它就它是一个什么,它是个指针类型,它是一个指针类型的数组里面存的都是什么指针啊,数组元素存的是指针是不是啊,每一个指针都会指向一个地址是不是,其实这是一个二级指针的一个应用的方式啊,那这里面选赋值的情况下,每一个都怎么的都是P0,然后等于na,这里面是不是P0是一个什么呀,一个。变量是不是啊啊指针类型的变量,这个值再带一个什么,带个下标,那我想取值情况是不是前面加个什么加星,然后等于一个什么呀,具体的值比如说等于这个是100,是不是这样操作就可以啊,他先算哪先算这个地址,然后再取什么,取这个值是不是啊,这是咱们同样道理啊。就是这块,那这块咱们也是给大家之前给大家做点延伸,就是做了一个什么呀,字符串的一个操作,是不是因为那个字符串让大家去做一个什么操作排序是不是啊排序今天咱们讲完什么,讲完这个一个叫指针和字串这块,然后把那个例子给大家做一下,如果你提前能做出来,你可以自己去做一下。
16:16
然后这是然后多极指针,多级指针就是一个推导的过程,是由一级指针去推导二级指针,由二级指针推导三级指针,是不是,那我们去推导一下啊,一级指针的地址用谁存的。二级指针来存,是不是二级指针的变量存一级指针的地址是不是二级指针前面加一个星等于谁啊?一人加俩星呢,等于变量地址等于一个啊,等于一个值啊,不是不是变量地址啊,是等于一个值等于一个。啊,一己之人的什么呀?去加个星吧,是不是一指针前面加星,然后那个是等于这个一个具体的一个值啊,然后是这是二级指三级指三级指针是指向一个二级指针地址加一个星指向谁啊。
17:03
啊,加雅行呢。不是,那这乱了乱了啊,说学们一个三级指针啊,这里面定一个int类型的星行星PPP,让它等于一个二级指针地址,假如说有一个模拟出一个二级指啊是它啊。那这里面星PPP等于谁啊?二级人还是地址啊。P等于的是BPP啊,如果它的情况下才等于什么二级指针的地址是不是啊?如果是星的情况下应该等于什么等于这个是二级指针是不是啊?那好,那如果是星星PPP,那等于什么星PP是不是,咱就看二级和三级的关系,咱们搞清楚就行,然后什么星星星PP,那这里面等于什么星PP,就这关系是不是你搞懂就可以了啊,然后后面这个如果有应用的情况,会这个咱们再去看啊,这是咱们上节讲课内容。
我来说两句