00:00
同学们,我们来看第31题。31题呢,咱们也需要阅读一下源代码,首先呢,我们看这有个char型A,大家看这个A是什么呀。A,其实就是一个。就是相当于我们一个指针数组,这里面呢,有四个字符串是吧,ABCEFGHIJK。然后呢,这边有个循环,大家看这个循环在做一件什么事情呢?就这句话大家必须要了解,我们来分析一下。分析。就是这句话的含义是什么呢?就是循环四次。循环四次,然后呢,大家看这里星号AI。循环四次,每次每次输出输出对应的字符串的D。第一个字符。那大家想一想,你第一次进来是不是就是A呀?
01:01
第二次进来就是E,第三次就是第四次就是I,因此呢,它输出的就是我们的AEG。I。那答案是哪一个呀?答案就应该选择A。选择A就可以了,所以说我们这选一个A,第31题选a 32题以下选项中正确的语句组是哪一个,也就是说下面哪一个是正确的,首先我们看第一个。第一个可以这样写吗?显然不可以,这样写的话,这样写的话呢,因为你在这这块首先就已经错了,大小就没定义是不是,所以说我们来看分析一下,第一个其实这个地方错误,有两个地方都错了。他错误的地方有两个,第一个。第一个就是这XS。
02:00
这个是错的,因为因为没有规定大小,没有指定数组的大小。后面这个就更不对了,它对一个数组像这样复制是不可以的,我们说这种方式呢,要么你是用SCF,要么呢你就是拷贝,所以说这个也不可以,这也是错的。这个直接这样给是不可以的啊,不可以。好的,那我们看第二个,第二个可以吗。第二个没有这种用法,第二种呢,它先定一个指针,然后让这个S等于是一种数组的方式给的,这是不可以的,错的。错误,好,第三个可不可以,第三个呢也不可以,第三个是这样的,他说先定义一个15串数组,然后再给它复制,不可以。啊B就说这样子,相当于他会告诉你这个S呢是一个不可修改的值,对,你们可以试一下,这个也是错误的。
03:01
错误的,呃,因为因为对于对于字符数组而言。自物数组而言,对,不能不能先定义再赋值。啊,在指定字符串。这是不可以的,你可以这样写,你可以直接这来一个等,然后呢,在这里面写你的东西,这是可以的,但是呢,你不能说我定义过后再去,这样的话呢,他认为你修改了S所指向的地址。这一点如果同学们还不明白,可以去看我讲过的这套课程,不是我先讲过的吗?就是大学,高校大学生。C语言课程这边讲的很清楚,这里就不再多说了。第四一个正确。第四一个是没问题的。可以这样使用正确。正确,当然。答案选择D答案。第32题选D。
04:02
33题又是一道程序阅读题,我们来看一下。这道程序阅读题呢,我们要稍微的分析一下它的代码,大家看这里方放函数2A,那么首先我们说这个2A等于多少呢?二乘以AA呢是等于四,所以说。八我们再看这个放BC,大家看BC哈。而同学们看这个BC呢,等于多少呢?对。同学们看BC,你把这个B和C传给这个方函式,那么X和Y大家看这里啊,XY呢,就说一个是五,一个是六,显然这个不相等,它就会返回X加Y除以二,也就是说,也就是说它会返回什么呢?这边会返回一个五加六。刮起来乘以二,显然这个就等于五吗?也就是说这里面会返回一个五,能看懂吗?这里会返回一个五,返回一个五过后呢,然后他又去调用这个放函数,也就是说这次第二次调的时候是放函数,第一个参数为八,第二个时差为五,那么这会等于什么呢?
05:09
显然xxy也因为八和五付给XY了嘛。它不会return X,它会return X加Y除以二,也就说它会返回一个八加五刮起来除以二的值,这个等于多少呢?13除以二,那等于六点几,返回一个整数六。所以说这个答案呢,应该选择B答案。好,那我就直接说了啊,通过分析。分析可知,分析后可以知道知知道。返回什么呢?好,返回一个六。对于33题而言,我们应该选择B答案。33选B34题设函数中有整形变量N,为保证其在未赋值的情况下初始值为零,应该选择怎样的存储类别?显然这个就是一个常识问题了,这地方我们知道啊,就分析。
06:07
分析,然后呢,我们是需要就是什么呢。呃,我们分析可以可以知道,对于对于静态,静态变量而言而言,不管不管是全局的还是局部的,局部的都会被被初始化为零。所以答案,所以答案选择什么呢?C我给大家试一下好不好,我们写验证一下。因为有些同学呢,可能对这块还是有不熟悉,我试一下我们写一段非常简单代码来验证一下各位同学,我有个A,然后呢print我们输出FA好吧,然后呢,为好看呢,我get差一下朋友们,我们运行,首先我问大家这个时候运行会出现什么情况,你负责了吗?
07:02
你没有赋值,这个时候就会出现出现程序会异常终止,大家看因为这个A呢,没有复制它会这个程序肯定会被崩溃,大家看到没有。这个程序就崩溃了。原因就是因为你在这种情况下,A指向指向的是一个未知地址。地址啊,也就是说以及是一个垃圾值。那如果是个垃圾,垃圾值的话呢,那我们在运行,运行的时候就会出现问题,那应该怎么改呢?非常的简单,各位同学,Static in the a就可以了,也就是说如果大家这样定义加一个static,那么它会默认如果啊,如果没有赋值默认默认。负值为多少呢?零,各位朋友。此时此刻,我们再次运行,就会输出零。
08:01
看一下是不是这样子的,果然如此,因此这道题的答案我们选择C是没有任何问题的。第34题讲完,第35题,又是一道程序阅读题,我们来看一下。需要大家认真的看哈。嗯,这道题呢,我们。哎呀,这道题稍微有点麻烦,好像是不是我们现在看一下,首先这有一个异位数组A,里面存的是12345678,有个I,然后for循环。I等于二,I小于六,诶同学们,我们我们关键点应该就在这里,我们来分析一把。嗯,同学们看这句话,它其实是循环了几次,是不是循环两次啊。为什么循环两次呢?因为I等于二,I小于四就会退出。也就是说I等于。二和I等于三会被执行,那么我们就看第一次。分析一下第一次循环。
09:00
第一次循环的时候呢,I是等于二的,I等于二的话呢,这里面我们来看一下它会怎么走哈。此时此刻如果I等于二的话呢,这边大家看这里这个是相当于二能理解啊,能理解那。A2 a2其实是哪一个值呢?A2是不是三呢?能理解吧,然后把A2,就是第三个元素的地址赋给了这个K,看懂了没有?也就是说把注意听啊,把三这个,呃,把就是这个A1维数组的第三个元素的地址付给了K。对不对,付给K以后呢,同学们,这个时候这个B就等于星号K,星号K就等于三三加B,这个B在哪里呢?B是一个全局变量。所以它就应该加二,因为B已经等于二了,所以说这个时候呢,B就等于五,看清楚没有,也就说这个时候它返回了一个五对不对,那也就是说这样这边调用完毕以后,应该是B等于五,再加一个五,为什么加五呢?因为你在这里面已经把B改成了五了,能理解不?
10:15
因为这是个全局变量,所以说这时B就等于了十。等于10G呢,他在输出这个B,因此第一次输出的是输出。输出十第二次循环来,朋友们继续来玩。第二次循环呢?此时此刻I就等于三了,能理解吗?那此时此刻B还来看这句话?关键是这句话B。此时此刻I等于三,那我问大家这个地址。它指向哪个值?它是不是指向了四这个元素。也就是说,此时此刻这个K呢。它指向的也是四这个元素,因此星号K这边B就等于四加多少呢?
11:05
因为你原你在上一次循环的时候,已经把这个B改成十了,所以说加十。那这个时候B就等于14,能理解吗?那换言之,换言之就说这边就应该等于B等于14,再加上一个14,为什么?因为在第二次循环调用我们放函数的时候,B已经被改成了14,此时此刻应该等于28,于是输出。返回来交给B后,B输出是28。同学们。大家看结果出来没有。从这里分析,我们可以看到,它应该第一次输出十,第二次输出28,因此它输出的结果是输出结果为十,28。选择哪一个呢?就应该选择C。答案。
12:01
没有问题。第35题,我们选择C。各位,前面几个题呢,我们就说到这儿,那下面我们准备讲36题哈。
我来说两句