00:00
我们来看21题,21题呢,它也是要阅读源码的,只要是阅读源码,我们都要特别小心。我们看这道题哈。呃,先定义的一个变量Y等于十,然后while循环一个Y减减。大家可以看到这个Y减减完了过后呢,后面是一个空语句,一定要把这个看懂,对,一定要把这个看懂,那么。这一句话大家能理解什么意思吗?就是Y减减,呃,然后他是先判断Y是是真,这个代表一个真还是代表一个假。然后呢,只要为针,就不停的循环。但是大家有没有发现Y呢?它原先是等于十的,所以说Y减减过变九变八,一直变到一,注意当Y变成一的时候呢,还可以进行判断Y。Y等于一,它判断完了过后这个一会减减的对不对。
01:00
减减完了过后变成零就到零了啊,零零进来过后,注意看Y等于零就应该退出了,但是在它。退出这个Y循环之前呢,它还要减减一下,也就是说最后一次是零减减,那么零减减过后呢,Y就变成了负一,答案应该是B。分析。对,就是Y从什么呢?从十一直一直减到。减到零。减到零就退出了,就会退出,退出这是第一第一句话,但是同学们注意,但是在这个退出之前。它这个Y0还要进行一次减解,但是在退出对退出while循环。循环前还要执行一次,还要执行一次,还要执行什么呢?Y减减即。
02:04
即什么呢?零减减就对零对零进行一个减,所以说这时呢,Y就等于了负一。因此,答案。答案就是负一。单就负一,那大家应该觉得选哪一个呢?选择。选择就是我们的B答案。答案,选B。放进去就可以了,那在这里我们写入他的答案B。第22题,22题呢,也是一个程序阅读题,我们也要特别的小心,首先呢,它告诉我们有一个字符数组。同学们看,这是一个字符数组,字符数组呢,他说我要这样去接受一个数,就是新S加二。首先我们可以看到这一句话表示一个什么意思呢?这句话表示一个什么意思啊?是不是实际上就是我们S完了过后,这个S呢,肯定它是指向我们这个字符串的第一个元素的。
03:04
对吧。那他加二。加二这个加呢,会先先去执行是吧,所以它会往后移动两位,移动到两位就移动到了T。移动的T完了过后呢,再对它取出这个值,因为S加二呢,它是一个指针运算,相当于指针运算,指针运算指了个T,那这样子呢,它就返回一个T字符,单个字符,答案应该是选C。分析。啊,因为诶就是这句话一定要读懂,S加二就是返回什么呢?SS。而他呃,后移,对应该是后移。后移两位,两个后移两两位哈,这样写后移两次。两次,然后就指向了什么呢?指向了这一个T。
04:00
所以说再求值,然后就返回什么呢?返回字母。返回一个字母T。因此答案。答案就是单个的T,单个T,因为为什么是T呢?因为它这是用C输出的,看到没有。而且它本身返回就是一个字符了,所以说输出这个T选择。选择什么呢?同学们,那就应该是选择C答案。我放在这里。C单。C22题应该是选C23题,我们来看一下,23题呢,又是一道程序阅读题,大家一定要认真看,23题呢,考察的是我们对字符数组的一个理解。一定要小心叉X使string这是字符串,看到没有?然后呢,上来过后,他做了一件动作,哦,这个这个事情很恐怖的X0,也就是说他这这个动作一执行完了过后呢,大家先来做一个分析。
05:00
分析他最先前。X,它是指向的这么一个字符串。是不是没有问题吧,然后他执行这样一个操作过后,我们字符串会变成什么呢。大家要分析出来,这个时候X它指向的字符串就变成了这样一个字符串,所以提醒我说零。斜杠岭。对,然后呢,再一个零。在在第二第三个元素也是零,后面这个呢,没有变化,就是安静。能理解我的是安静。好的,那同学们看一下哈,看一下,他说此时此刻我要去统计sets of,这个没什么可说的,这个就是返回什么呢,返回。返回我们整个X它最先前开辟的空间,因为X最先前它这一个字符串后面其实还带了一个斜杠N的。
06:01
这个大家能理解吗?我们以前在讲讲过的,因为他在这种方式赋值的时候呢,最后有一个分围。就斜杠林这个分尾,它是也是属于我们这个数组的一个空间,也就相当于说你后面这个地方原先还有一个斜杠林,那数一下嘛。1234567,所以说这个呢,返回的是空间大小,返回空间占用大小及七个字节。这个能理解好七个字节。那紧接着呢,他又这样来统计了一下,这个统计的是什么呢?同学们,这个统计的就是除去零,除去零的所有的有效字符个数,就是就是统计,统计X这个数组,注意听数组的有效。有效至结束。我们以前讲过有效质结束呢,它以碰到这个零为结束。
07:05
这个这个磷子啊,其实它的本质就是斜杠铃,我以前讲过斜杠零呢,它其实就是磷子。这两个是一样的,所以说他这样一统计,他发现上来就十杠零,那么有效质结数其实就是零个,因为上来过后它第一个就是零了。就是零值,所以说这个结果我们就不用多说了,那应该结果是什么呢?运行的结果一个是七,而一个是零,选择什么呢?就应该选择B答案。大家能理解不也,也就是说我们第23题选择的答案应该是B答案。23题选择B答案,那么我们来看第24题,又是一道程序阅读题,也要认真小心一点。这道题呢,它是一个函数的,这个也不叫递归调用。应该叫做反复调用。我们看第一次FN。
08:00
FND是这个返回的是传,传进去一个一,然后返回一乘以二,所以说这个结果呢,应该是二。也就是说它把二返回过后,再次调用F,再次调用这个F呢,传进去是二,那这个F2就应该返回一个四,然后试完了过后还有一次调用,大家发现没有。还有一次,它反复的调用了三次,那就是四乘以二,那就八了,答案应该是八。答案应该选择我们的D答案分析一下。分析这里呢,主要是要分析出这里一共调用了几次呢,这里是重复调用或者反复调用,反复。调用对调用我们F函数一共一共是三次。三次好,那第一次第一第一次。第一次返回二。第二次。
09:01
第二次。返回。是。第三次返回八。因此答案。就是我们的八选择什么呢?OK,那既然是八,那就选择我们的D答案。24题选择D。没问题,放到这来,第25题又是一道程序阅读题,要认真看哈,这道题呢,考察我们对指针的基本语法的理解。首先我们看第一个题对吗?显然错,为什么呀?你都没有初始化,你就敢去这样用啊,那程序就会异常终止。那么我们再看第二个也是一样的道理呢,都没初始化,不管怎么用都是错的,后面都不看,其实它这个错了两下对不对,你百分号D你要取的话应该星号啊,哪能是地址呢,所以A和B肯定是错的,这个不用不用说。分析。分析一下。
10:00
分析第一个,第一个企业这里犯了两个错误。他犯了两个错误,错误有二,哪一个错误呢?第一个P没有初始化。第二个就算你要取值,也应该用取值符号,对不对,所以你这个地方,这个地方如果要取的话,也应该用星号,当然你前面都已经没赋值了,后面就不说了。第二个题也是没有初始化就拿来用了。也错误。P没有,没有初始化,同样道理,其实这个地方要要取出,他想取出P纸箱的值,它其实也应该这样子用。所以说他其实也也犯了,还犯了一个错误,就是在输出P的值的时候没有。没有用这个取值符,好,不管不管怎么样啊,A和B都是错的。第三题对不对呢?第三题其实是对的。第三题这个方大家一定要看懂哈,它这个地方哦,我刚才说错了,不好意思,我刚才说错了,这个地方是SCF,如果是SCF的话呢,那第一个题呃,就错了一个就是没初始化。
11:07
就就是没有初始化这个空间,所以第一个题错的,但是他这个是这个是可以的哈,那第二个B呢,B他想输这个地方,那这样也是错的,B是错了两处一呢,就出了一处啊,因为我我这忘看了,它是SKY是表示输入。那现在我们再看第三题,第三题应该是没有任何问题的,第三个题呢是这样写的。呃,先有一个K空间。K把K的地址付给这个P,这这个是可以的啊,这个是可以的,然后开F这边这个P呢,本身就是地址看到没有,所以说这个是没有问题的,C正确。那如果有同学有有所怀疑呢,我们可以来试一下。也就是说他这个时候是通过P的地址去给K的空间赋值,而K的地址呢,已经赋给P了,所以说它是可以这样完成的,来给大家写一个吧,试一下好不好。
12:05
Include,因为有些同学呢,他可能有所怀疑,就说这样写行不行呢?是没有问题的。来朋友们,我们放这一下,放这这个挂号我们要改一下啊,因为它是拷过来是一个。拷过来是个中文的括号,改过来。我们这样给大家输出一下好不好。我们输出百分号D,再输一个百分之D,我们先按K输出,再按照取这个值的方式输出,这两个呢,同学们。这两个方式他拿到的值其实都是你输进去的值,因为K,因为你这个P啊,这样赋值就相当于P呢,就指向了K嘛。是不是在讲指针的时候,我们已经讲的很清楚了,来运行一下,测一下,我输一个十。待会儿呢,我输一个十,输完了过后我回车,回车过后呢,我先告诉大家会输出两个十,一个是K,一个是B,但是实际上是同一个值H,忘了再来。
13:07
再来一下运行哈。Fish。好,那么我们再输一个十对不对,可以的,那如果画一个空间的话,应该画一个内存图来说的话,应该是什么样子的呢?就相当于说我这里有一个K空间。K空间这里有个P指针,这个P指针呢,它地址指向了它,然后呢,在这个输入的时候,是通过这个PP这个因为P这这个这个P它其实就是这个地址嘛。这个地址就指向我们K空间,于是在这里输一个十,输完十过后呢,用这种和这种方式都会取到你在这个空间存放的十这个值好就这么来的哈。所以说这道题呢,这道题C是正确的,那么我们来看这个为什么错了呀,同学们。能能告诉老师,这这这道题这哪错了吗?
14:02
错误在哪个地方,错误在这儿。他像这样子就不行,他是先定义了一个P指针,然后再艾特服K给这个地址,这是不行的,如果你这个是要给的话呢,其实不要不要这个P是可以的,你就不能这样子了,因为含义变化了,明白了吧,所以说这里他的错误。错误要分析出来,错是星号P等于1K,因为什么呢?因为它是先定义,先定义指针。再赋值的再赋值,这时这时就不要不要带什么呢,不要带这个星号了。明白哈,所以这个题呢,它错在这个位置的,其他其实都都没有错,其他都没有错,如果说同学们愿意试一下的话呢,我们再给他试一下。你看下。来,你看这儿。对吧,这样同样我要把写中文的符号改一下。
15:02
这个挂号。改成英文的。你看这样子。呃,这个地方为什么错呢?未定义这个P,好,你看这个P。这个地方应该是一个分号吧。好,你看这这样子,我们回车哈,我们回车。SKYF。你看这个地方已经直接报错了,他说他说呀,不能把一个int新类型的值分配到int中。因为这个是个地址啊。而你这个是个什么呢?你你这里是一个取值,是一个具体的值,这是个地址,类型都不一样,也就是说一个类型是。也就是说什么呢,这个K它的类型。是int星。而我们的星号P实际是什么呢?各位同学分析一下,这个实际是特了已经。因为这个时候它通过取值符是直接访问到呃,K所指向的那一个值了,因此这两个类型不匹配,看到没有。
16:07
啊,你看这报的很清晰的,因此不能这么去用,好删掉。那各位同学,那这道题我们第25题呢,显然就应该选择我们的哪个答案。第三个答案是C,第26题我们来看一下,第26题呢,也是一个基本语法题,他说啊。他说跟int星P中括号是语句等价的是哪一个,那我们来看一下呗。我们来分析一下,第一个首先看,首先我们问大家一个问题,这时这个P是什么类型。P是什么呀?P是什么指针,它是一个数组指针。它是一个指针。啊,它是一个数组子哦,它是一个指针数组。它是我我想想是个什么,对,它是一个指针数组,这个大家能看出来,它是一个指针数组,那我们再看这个,这个显然不行的,这个就是一个数组啊。
17:06
它是一个什么呢?这个P。P是一个int数组,两个类型都不一样,我们再看这个,这是什么呀?同学们,这是二重指针或叫多重指针,这二级指针P是什么呢?P是二级指针呢?B是二级指针,显然跟我们这个P根本不是一回事,人家是指针数组,你是二级指针,风马牛不相不相等,这个是什么呢?好,我告诉大家,这个是相同的,这也是这个P呢。也是指针数组。也是指针数组,好,这个没有问题,那D呢,我们来看一下D可以用吗?D是不行的,大家看它在前面用这个信号包起来的。这是什么呀?这是什么呀?这是数组指针。哦,这个这个时候这个P呢,它是数组指针。
18:00
这是两个不相同的概念,这是代表这个P呢,它它呀,它指向的是一个数组,这个数组包含四个元素的这种数组,明白了吧,所以它是数组指针,而这个是指针数组是不一样的概念,因此在这里面呢,我们就应该选择我们的C答案。对答案。答案选择是C,好,同学们,那这里呢,我们把。这个写到这啊,第26题就它好,同学们前面几个题呢,就评价到这,待会呢,我们讲27题。
我来说两句