00:00
好,各位,我们来做一些关于函数的练习题,那么这里呢,我给大家准备了三个题,我们来一起做一下,加深一下对函数的理解。来,我们看一下函数的课堂练习。函数课堂练习我们有三个,我们来一起看一看这三个题好不好。来一个标题二看第一个题,同学们,那第一个题呢,是这样子说的啊,同学们看到。看一下这里呢,有一个main函数,Main函数里面调用了一个SUM12,那大家看到在sum的时候呢,我定义定义的行参一个是N1逗号N2FLOAT,诶这种用法可不可以。返回的是一个FLOAT32,这种用法是可以的,同学们。这种用法就是跟以前咱们定义多个变量的用法是一样的,就是说如果N1和N2的数据类型是一样的话呢,第一个就是前面这个些都可以省略,在最后写上它的数据类型就可以了,那也就是说N1和N2都为FLOAT32这个数据类型,对吧?这个是可以的啊同学们这是可以的好,然后呢,他输出这个要输出一个什么东西呢?他说N1。
01:16
同学看到他说N1的类型是什么?大家想一想,然后这边会返回N1加N2的值,我们看一和二传进去了,穿进去N1的类型,显然这地方应该是float。这方应该是FLOAT32。对吧,然后这个N1加N2算出来应该是三,返回去是三,因此,因此呢,这个结果应该是这个地方输出float的三二,这个地方返回一个三,于是上也是三,最后结果是这样子的。最后这个地方输出的内容给他写一下。好,这里输出的类型是type。这样速度是N1 type等于什么呢?FLOAT32。
02:04
这个地方会输出什么呢?Sum等于三完事。所以说这个答案代码是没有错误的,输出就是这个内容,一个就是刚才老师说的这块,还有一个就是这个和。对不对上这写错了。然后呢,这是第一个题的评讲,我们看第二个题,第二个题呢,他问代码有没有错误,为什么,我们来看看这个代码是什么意思,同学们呢,也在听老师评讲的时候,自己也可以先想一想,来看一下吧。好,我们一起评价一下。这句话是什么意思?这句话是不是把sum这个函数。Sum是不是函数啊,Sum把sum这个函数交给一个A变量,允许的把SUM2。也交给了一个B变量。这也可以。没问题吧,然后呢,它调用一个放麦放A。
03:03
12A这个A是什么?A是不是就是这个函数类型呢?他把A给了哪个呢?给了这个参数。给了这个。我们看这个,这个可不可以,同学们。这个地方是function function的一个变量,然后它的类型是MYMYMY上是什么?是不是一个自定义类型啊?自定义类型是什么?类型是这个类型有两个int,有两个int的行参,然后返回一个int a没问题吧?那这个时候A是谁?A其实就是上,上是谁,上就是它。那也就是说相当于把sum,把sum这个呢付给了my sum就是这个函数类型应该是可以的,你看这两个int返回int,我这是两个int,也返回一个int,这是OK的T,所以说第一个这个这个地方是没问题的。这个地方没问题,我们再来看下面这一个MY放B,他把B这一个函数类型交给了MY放,诶这就有问题了,大家看到,因为你MY放这方是接收的是这种my sum这种自定义数据的自定义的数据类型,而他呢,只能接收两个int的行商和返回一个int,但是你给的这个B看B其实是SUM2 sum2是谁啊它。
04:22
那也就是说,它相当于说要把SUM2付给谁呢?要把SUM2这个函数类型付给一个叫my sum的自定义类型,但是my sum呢,它接受的是两个int。行参和返回,但是你给的是三个int的行参返回int,因此这个是错的。答案出来了,说一下。这句话会报错?错误。错误的原因是,原因是类型不匹配。为什么类型不匹配,因为不能够,因为。
05:02
因为不能把,把什么呢?你不能把这种这种类型的函数,其实也就是说不能把这个付给谁。这个函数类型赋给。付给。诶付给谁呢?付给这种类型。是不是是这意思吧,就说你这两个类型不匹配吗?这个是OK的,这个写法没问题的。但是你这个写法是错的。这个是OK的,但这个呢,是error的,能理解吧,为什么刚才老金说了啊,你不能把这个这个函数类型交给这种,因为它只能接受两个形参。而你给他三个行程错了,类型不匹配好,这是关于这两个题的评奖,来,先把它放到我们的笔记里面去。T。先把题写过来。对吧,第一个题的评奖还有其二。
06:03
T1和T2我们都有了,然后呢,我把它放到这里来。好的,第一个题我们先罗列到笔记里边去。第二个题的评奖我们也拿过来。第二题。第二个类评奖呢,刚才我们说了,它有一个地方是错的。对不对,错误的原因,刚才呢,老师也做了一个分析,就是类型不匹配。是不是就这块儿。这个地方是错的,写一下。分析的很清楚啊,大家看一下。然后呢,我们把这块呢也拿到笔记里面来,然后第三个题,我们再来看一下第三题它的要求是什么?第三题是这样子的,是一个编程题,他说请编写一个函数叫swap n1TN2int,可以交换N1和N2的值。大家想一想。
07:01
能交换吗?我我们这个地方,它这个题出的是有点小问题啊,如果要交换N1和N2的值,那么这个地方得有个星号,因为你如果不是星号的话,你是只拷贝那是交换不了的,所以说他这应该是有这个星号才对啊,应该是出题的时候忘忘写了这两个星号,来我们一起完成这个题。来吧,同学们,打开我们的这个地方,我们新建一个Excel。Excel,这是我们的练习室。对不对,写个文件夹,Excel exce e c04。零四好,新建一个文件叫main.go。May。点购,然后呢,把前面的这个通用的部分,就是包和打包和引入包这一块呢,我们拿过来为我所用。
08:00
我们写一个主函数。写一个主函数过后呢,我们把题的要求先放过来,诶刚才忘忘了粘过来了,对吧,这句话粘过来。好的,那现在这个函数呢,我们就开始来编写了。根据这边提的要求。诶,这个怎么没粘过来呀。好,我再重新粘一次就没问题。放过来吧。Function the swap。我们写个N1新int。N2。新对不对,然后呢,我们在进行这个交换的时候,可以这样做,定义一个临时变量。好,定义一个临时变量,那定义临时变量的时候呢,我就用它来接收了,比如说有个T是做一个临时变量,然后呢,先把新一,就是一这个1N1的值交给他,注意这个这个星号N1代表是取出这个N1。
09:05
这个指向的那个值啊,就取值运算,这我就不再多说了,然后呢,再把N2的值。对不对,把这个N2这个值交给N1。没问题吧,然后星号N2这个值呢,再让星一再把T交给他就行了。大家看这个逻辑,先把N1的值。放到T这边去,再把N2的值交给N1,再把T交给N2,这个就完成了一个变,啊,完成了一个变,交换完成一个交换,那么我们来看看能否交换成功,我现在呢,先定一个这边定一个N1。好吧,这边第一个N1或者叫A也可以A,然后呢10B。多少呢?20我调用一下swap。我掉所,但是因为你这边是是一个指针对不对,它是一个指针,它是一个指针的话呢,我们在传递的时候得传递指这块大家明白吧,前面已经讲过好多遍了哈,这传入的传入的是地址,那边接收的是指针在接收这个地址,然后我们来输出这句话print。
10:21
A等于什么呢?好,B等于什么呢?输出来一个是A,一个是B,跑一下吧,我们看看当进行这个函数运算以后,或者函数调用以后,A是不是变成20 B是不是变成十了。走了点点CD到X0几呢零四。Go run me,跑起来。跑起来,我们看到这个结果,哦,对不起,对方应该用F。这样才是格式化输出。这样才是格式化输出来吧,看一下。
11:01
A等于20 B等于十,我们看原先的值是A等于十,B等于A,原先是A等于十,B等于20,现在交换过后A等于20 B等于十,正确。交换成功,注意啊,对方一定要用指针的形式来传递,因为我们知道基本数据类型它是值传递的。直传递他要进行一份拷贝,如果是直传地,你这个是在在这个里面是交换的时候对外面的变量没有影响啊,所以说老师这里面用的是什么,大家看清楚了,这老师用的是一个指针来接收这个地址,进行相应的数据的交换,好这是这个题的评价,来吧,写到我们笔记中去。那这个。提的要求,先把它洗过来。对吧,这是我们的T3。题上的要求。就是这句话。当然,我把这一部分代码给同学们放到相应的笔记中。同学们,以后便于复习。
12:01
欧了。好,然后翻过来就可以了。代码稍微的整理一下。好,这是我们关于函数的三个练习题,就跟大家分享到这里。大家自己最好是敲一遍啊,不能说光看老师演示一遍,自个儿不去写一遍,那是不行的。走了。
我来说两句