00:00
下边呢,我们继续来看指针的加和减的操作,这个就更简单了,更简单了,其实只要明白了加加和减减,那么单独的加和减就不在话下了,我们直接看案例就可以了,好吧,嗯,第一个呢,就是我们看当当可以对指针按照指定的字节数大小进行加或者减的操作时,可以快速的定位你要的地址,我举个例子,比如说还是以这个案例为为为准,这仍然是我,我干脆把这个例子拿过来哈。我们直接在这讲这个加和减就可以了。那我们呢,仍然是在这边来给大家讲一个案例pointer的。来,我说pointer的下岗你。Pointer的DEMO03。POINTER3,我们来写到这里。那这边呢,我们写一个叫include。STDIO。
01:01
对,然后把这个粘过来,我们看一下啊呃,直接分析了,前面我不讲哈,这是指针,然后这个地方干什么呢?将将VR的首地址,首地址附给附给什么PTR了。是不是也就是说我们这个PTR呢,指向了我们这个VR数组的首地值,那么这个地方干什么呢?同学们能看出来吗?加二加等于二加等于二是不是就是PTR等于二,那相当于说PTR。PTR的这个存储的,它存储的这个值,存储的这个地址。就是它存它这个里边存储的这个地址干什么呢?直接加两个。加两个。两个H加两个。两个int的字节。说白说的,再直接就是八个字节,因为一个int是四个字节嘛,那这边就是八个字节。
02:00
八个字节,那我问大家一个问题,如果这个加八个字节它,那如果按照这个图来看的话,原先假如他手地一直在这嘛,那原先是三三。对三三,那如果如果在一个基础上加八个字解,实际上就一下就直接定位到了。这个地方。明白了吧,啊,其实非常简单,因为你三加八不就是B吗,11嘛,对吧,11好,也就是现在呢,通过这个小案例我们可以看到,它现在呢,直接就指向了,呃。嗯,指向了那个最后那个元素,或者说它直接指向了下下个元素,那这个地方当然很好理解了,你看这时呢,我们这打印出来几个值,大家看分别是什么啊,VR2白毛地,其实这个地方呢,呃,这个地方其实就直接把这个20,我是通过数组的方式来输出的,看到没有,我直接看一下,我想验证一下到底PTR是不是指向了200。那这个VR访问二这个肯定是200,这个第这个肯定是200,这个没什么可说的,因为你是通过下标去访问的,肯定是200,那么这个时候呢,我Dollar VR这个二,也就是说我现在用这种方式呢,把第三个元素的地址也打印出来了,看到没有,然后呢,我在用PTR,这个PTR。
03:19
大家看这个PTR,就是打印出PTR,它存储的那个地址是多少,这个星号P呢,是PTR指向指向的地址的内容,就这样写啊,PTR。存储,存储的地址。对吧,这个是PTR指向的指向,呃,应该这样说。PTR。指向的纸吧,好,这样简单些。啊,PTR指向的值,指向的这个值是多少?那么嗯,这个地方,嗯,大家分析一下是不是这个地址。
04:00
就这个这个地址。VR的地址其实就是PTR现在存储的地址了,因为你加了一个二,实际上就是第三个元素地址,所以说这两个值应该是相等的,就这个值和这个值要相等。明白了吗?而这个值。这个值和这个值要相等,因为我我这个通过这个取值符取得到了PTR,它指向的那个值嘛,所以说这这两个是相等的。这两个是相等的,就是正确的,好,我们来运行一下看看效果就可以了,好吗?因为这这段代码其实你照这个图一看就明白,其实就是相当于说你加了一个20,原先指向这的噌的一下就到这来了。明白了吧,好,我运行一下,好吧,同学们非常的简单哈,运行我把这个先注销,已经注销了,运行运行看一下效果吧,同学们跟着老师思路啊,都不难,只要你认真听呢,都OK。我们可以验一下。我们看,嗯,这个的确是200,这个呢也是200,所以这两者其实是相等的,我们再看VR2的地址是0021F78C,这个PTR存储的值0021。
05:13
这个EF78C这两个地址也是相等的,没有问题吧,好的,所以说这个分析呢就OK了啊,非常的简单,我们再来看,既然有加加,当然还有减减,减减这个呢,我就不去讲了哈,减减这个呢,我们看,呃,很很简单,我就不去讲了好吗?没没什么难度,这这有什么难度,就是一个就是一个。如果是减吗?如果是减,那就是相当于说在他的这个。这个地址的基础上减去两个int的字节数就是减八,好吧,我就就不讲了,好各位同学关于指针的加和减的运算呢,就给同学们讲解到这里,好吧,大家好好的领会一下。
我来说两句