00:02
各位同学,我们再来看一下指针的比较,那么指针它既然它里面存的是这个地址对不对,就是它指本身是存了一个地址,这个地址呢是有值的,就是这个地址本身就就是一个具体的值,那么指针呢,也可以用关系运算符进行相互的比较,比如说等于大于等于小于等于,这个我们写完啊还可以大于等于小于等于都可以。比如这个我也写写全吧。还有像这个小于等于对,还有大于等于都可以,那么如果P1和P2指向两个变量,比如说他们,呃,比如同一个数组的不同元素,则可以对P1和P2进行一个大小的比较,那现在呢,我们直接看两个案例,然后分析一下它输出什么就可以了。来看第一个题。那第一个题呢,很简单哈,这是第一个数组,看清楚了,这是个指针,这时我们看这时PTR,它指向了什么呢?它指向了VAR的第一个元素。
01:04
VR首地址吗?首地址就是第一个元素的地址对不对,第一个元素地址。那么我问大家,现在这句话PTR等于VR0,这个可不可不可以比较?这个地方肯定是错误的,为什么错误呢?类型不匹配。类型不对。类型不不一样,为什么不一样啊,因为你这个PTR是一个地址,是不是VR0,它是一个具体的int,一个一个是int,新一个是int,肯定不一样。所以它它的类型是因为一个是int新,还有一个是int,这个无法比较,所以它会给你报错的,编译都会报错,我们再看这个呢,PTR等于I的符号VR0,这个可不可以,这个是可以的,而且PTR它本身指向的是第一个元素,所以说这个呢,又是地址也是第一个元素,这两个是相等的。
02:01
OK的,这个是可以的,可以,而且他们就是相等,因此呢,这个OK2会输出。分析出来了,再看PTR等于VR可不可以,这个当然也可以了,我们是不是以前讲过很多次了,数组名就代表我们的首地址,也就是第一个元素的地址对不对?说这个也可以,因此呢,这个也是相等的,所以说会输出。会输出,那么再看PTR大于等于VAR吗?这个显然不不相等了,为什么我们还是看这个图,我们以这个为例,就是说你现在的地址是指向的第一个元素,也就说你是01133,那你这个0X1133和这个地址相比,你肯定不大于等于它,你看你大于等于它吗?也也就是说你你觉得0X1133。大于等于0X1137吗?显然不大于啊。
03:01
所以说这句话呢,就是同学们看到这个呢,它它编译没有问题,因为它确实是可以比较,但是可以比较啊,可以比较这是没问题的,但是但是返回的是,但是什么呢?返回甲。返回一个false。说faf force,因此呢,这个呢不会输出。这个不会输出,好,这就是我们第一个题的评价,我们来看看是不是这样子的啊,各位同学,我们给大家运行一下,或者说给大家看一下吧,来走一个案例。那这个呢,我们取个名字叫做指针的比较power compare。好比较compare OK,那我写到这里来。这里面呢,我们来一个。这个PP去掉看一下。找一个哈,Include std。没问题吧,然后呢,我们把这个代码放这就可以了。呃,首先我们可以看到这门果然是一下就报错了,报错的原因他一定会报类型不匹配,你看他说操作类型不匹配,一个是int,新就是这个指针,一个是int。
04:11
因为你指针类型是你的心嘛。对吧,这个和谁呀,和int不是一个类型。啊不一样的,那这个呢,就不能这样去用,所以编译直接给还还没有编译啊,语法都错了,那这个地方同学们等。这个可以的啊,所以说这个OK2会输出,这个OK3也会输出,这个不会输出,我们运行一下就可以了,好不好,同学们,咱们运行一把,看前面有没有注销跑起来,我们看现在呢,应该会输出一个OK2和OK3是吧,各位同学。我们稍等片刻。那现在呢?它会输出OK2和OK3吗?果然是这样子的,答案正确。好,第一个题我们就评讲完毕。我们再来看第二个测试题,第二个题呢,它是这样写的,大家看一看。这也是一个数组。
05:00
他也他先让这个。他先让PTR指向VR,也也就是说现在呢,呃,还是这样子的一个关系,就PTR指向了第一个元素十对不对,然后呢,I等于零没问题,PTR小于等于。VAR max减二,那首先我们分析出来现在这个地址是多少,要分析出来VR这里面是几呢?实际上是三减去一个二,那也就是等于一呗,你三减二不等于一吗?那也就是说PTR只要小于等于我们的这一个vare的地址,它就可以输出,那这个就简单了,你看啊,他怎么做的呢?他进去一下,他把这个地址输出来。然后把这个值也去输出来对不对,这个很简单,输出来输出来之后PTR加加,诶这个加加是不是就相当于加四个字节啊,因为加加就是加一个单位嘛,加一个in特单位加四个字节,那现在这个PTR加一个就指向下一个元素I也加加,I加加的原因是因为他要去输出这个对应的下标对不对啊,所以说它加一个呢,就指向了第二个元素,也就是说第一次进来加加过后呢,它就指向了这个。
06:16
但指向这个呢,应该会把这个100也会输出来,因为呃,你你加完了这个就变成七了嘛。变成七过后呢,十和100,呃,第一个把十输出来,第二个把100输出来了,输出来过后他又加加。因为你在这儿。你在这的代码就这样子的嘛,就进来过,只要小于等于先输出,再加加,再加加呢,OK,这个呢就指向到这里来了,指向到这里这个就变成了B,但这个时候同学们看0X113B,再跟这个0X1137比较,显然不再小于等于它了,因此呢,就不会再去继续输出,也就是说这边会输出两个结果,这边我们分析分析出来啊,会输出。会输出什么呢?一个十,还有一个100。
07:03
200是不会输出的,来,各位同学,我们运行一下老规矩哈,老规矩我们仍然呢在这边再写一个小案例就可以了,写上我们把它分开写啊,这叫pointer。什么呀,Compare。零二。COMPARE02没问题吧,同学们,然后呢,我们在这个地方呢,给它改个名。写上一个include。STDL。然后把这个写上去好,如果不出什么问题的话呢,他应该输出一个100,呃,输出一个十和100,我们运行一下跑起来。运营起来,这个结果跟我们想象的是否一样呢?我们拭目以待。应该不没什么问题对吧,你看第一个不是十吗。对,第二个不是100吗?正确的好的同学们,那关于我们这一个指针的比较,我们就讲到这儿啊,比比较简单就是说你们知道指针可以比较这个事儿就行了,以后咱们在做题的时候呢,你不要说,哎,你看指针怎么可以比较啊,你好像没有见过一样,就露怯了。
08:09
好,我把它梳理一下。指针呢,是可以比较的。好,我们把这个两个案例给大家拿过来就行了,第一个案例和第二个案例,案例一。案例一案例一呢,我就直接从这个地方取。没问题啊,同学们,这是我们的第一个案例。我们紧接着还有一个案例二,案例二,案例二呢,各位同学,我就从这边取了。非常简单哈,各位,那这个示意图大家可以怎么去对照看。怎么去分析,可以对照我们原先这个示意图来分析就可以了啊,这个示意图我们前面已经有了,就不再多说好吧,好,同学们,那关于我们指针的比较的内容呢,就给同学们介绍到这里,大家好好的消化一下。
我来说两句