00:00
好,我们继续来上课,那么上节课呢,我们介绍了我们的这个什么,这个静态变量啊,那么这节课呢,我们再来介绍一下我们的引用传参啊,那么引用传参呢,是我们函数的基本里边的最后一部分,剩下你再看什么变量函数,回调函数,内部函数对吧?递归啊,匿名啊,这些实际上都是函数,只是因为它的结构不同,看什么叫法就不同啊,叫法就不同,所以在现在我们学习函数这个阶段,可能大家在学的时候。很痛苦,为什么呢?因为你不知道未来你要怎么用或者干嘛用,比如说上节课我们讲的什么,讲的是静态变量,对吧,那静态变量你干嘛用呢?对吧,这里边我说了,一般都是干嘛统计函数调用次数,但是我们很少会遇到这样的,对吧,除非你自己真的要写的时候,那OK,那你就要考虑什么,我可以使用什么静态变量,对吧?来去干嘛来去。定义一下,要知道我这个函数被别人调用了多少次,是不是这样的,哎,所以呢,大家只需要知道它这个基本结构就可以了,你只需要比如说我说变量函数,那你就需要知道什么是变量函数对不对,变量函数基本结构是什么样,我说静态变量,你要知道它基本基本结构是什么样,我说引用传参,你永远知道它基本结构是什么样,就足够了啊,就足够了,好了,那这节课我们来看一下我们的这个引用传参啊,那怎么叫引用传参呢?来这里边。
01:10
来,我在这里面新建一个啊嗯。PP文件叫做幺幺啊,我们来一个引用,好引用还记得吗?我们变量的引用怎么引用的,变量的引用赋值还记得吧?来这里边比如说我Dollar了A等于等于什么?等于一个,这个叫做融值教育,对吧?然后呢,Dollar了Dollar了B看到了Dollar b时候,你把你的赋值给我一份,那Dollar了A怎么赋值呢?是以引用的形式赋值的,是不是就是把Dollar a找到融值教育的地融资教育这个值的地址复制给了Dollar b对吧?那这个时候我输出Dollar b的时候,Dollar b是不是通过这个地址去找到了这个值啊,找到这个值了,所以这个时候它可以输出什么,可以输出我们的这个融资教育。是不是可以输入交用对吧,那他们两个史实是不是都是通过一个地址去找到这个值,Dollar a是通过这个地址,Dollar b是不也通过这个地址找到这个值的,那无论任何一个元素。
02:05
比如说我把这个Dollar b改变,改成什么呢?改成这个叫做edu e work,那么这个时候我再来输出一个Dollar a。然后我再来输出一个Dollar b,那你看是不是两个都会变成什么,变成e work吧。来个BR,那现在你再来看两个是不是都变成了e work对不对,哎,那OK,这就是咱们的这个引用赋值,也就是说do在赋值的时候是把这个刀A找到这个值的地址,赋值给它到了B,对不对?哎,那咱们来看那什么叫做在在咱们这里面什么叫做静态变量的也是一样啊,不是静态变量啊,叫做什么这个。引用传参啊,引用传参也是一样的,那咱们看啊,比如说在这里边我来FC方式。呃,这样吧,我在函数的外边先定义,比如定一个no等于什么,等于100啊,然后呢,FUC方式在这里边。来个DEMO啊,这个DEMO干嘛呢?就是求一个数,比如说求一个和啊,那这里边你要给我传一个什么,传一个数,传一个数以后呢,在这里边我干嘛呀,我是不是就直接可以做一个,比如说我到了no,呃。
03:11
不是no加等于,加等于几呢?加等于五,也就是你传一个值,我是不是就加等于五了。对不对,哎,那OK,那现在咱们来看啊,这里边我没有输出对吧,然后我不管他了啊,我直接调用,调用谁呢,调用这个刀了no。把N传进来了,对吧,传进来以后啊。这里边我再来输出no,也就是说这个no在函数里面执行,注意no是不是会,这是什么,这是我们的13 13是不是负值里的这个行参。对不对,然后形态在这里面去加吧,比如说这个形态我也可以改了啊,我改成什么,改成no,诶这块我也叫no,好了,我都叫no,看明白了都叫no,那现在我调用的时候是不是传个no no进来,然后再输出这个no吧,那这个时候你看结果是多少,结果是不是依然是100,为什么结果依然是100,你看好了啊,我在页面及声明的一个普通变量叫no,这没有问题,对不对,然后呢,刨去这块内容,我这块输出这个no是不是也是正常的,他为100,因为输出的人是不是输出的是这个值。
04:09
对不对,那接下来在第16行的时候,我是不是调用了一次函数,那么调用函数的时候我干嘛?我这是不是形参,是不是局部变量,是不是在函数内部有一个变量叫no,也就相当于在这个。这个地球有个人,咱们叫地球人,在月球呢,也有个人,那是不是叫月球人呢,对不对啊,都是什么,都是人,但只是他们两个在了两个地方不同,所以他们是不同的人,对不对?哎,那OK,那这里边是不是也一样,你看我这个no是在页面级的,所以它是页面的no,我这no呢是在我函数的内部,是局部变量,所以它是函数内部的no,是不是它们两个不相同对不对?所以我在这里边让它no加,加等于五,是不是只限于它的值去加等于五对吧?所以在这里边我只能在函数内部输出这个no的时候,它知道它是105。对不对,而我外部的这个变量有改变吗?是不是根本就没有啊。
05:01
哎,那咱们怎么叫引用呢?咱们来看啊,比如说这里边一样,我再来一个no,等于115。好了,UC放某一,然后这里边看好了,我再加一个括号来,叫做and包了no,看我前面是不是加了一个and的符,取地子符啊,哎,我加了这个取地子符什么意思呢?就表示你的时参,比如说未来我要调用DEMO。调用一对吧,是不是要可以写时三时参,这时差是不是这个no啊,对不对,那你就代表的你的这个时参要以什么呢?要以引用的方式传递给我,也就是什么意思,我时差要把它地值给他,明白吧,时差要把找到这个值的地值给他,那给了他以后,他在函数内部,因为它是局部变量,它在函数内部是不是就可以通过这个地址去找到我这个值了,那给它做更改,比如加,加等于多少,加等于五对吧,加等于五,那这个时候你看我在函数外部再输出这个no的时候,你看它的结果是不是就是120。是不就120拿到了,看到了吧,哎,这是不是相当于另外一种方式的一个什么一个全局变量了吗?对不对,那咱们再来看,我再给大家分析一下,这个我换变量名了啊,这边大家拆分,比如说这里边A等于115FUNC DEMO Mo,然后。
06:13
取地址到了好了,那这个时候到了,No加等于。一样,当我调用的时候,比如说这里边我直接输出am的时候,这个时候它依然是115对吧,是不是115啊,哎,那好了,只要我在输出之前调用一次,调一次在这个函数内部是不是就对它的值进行改变了,改变以后,那这个时候你再来看它是不是就120,诶没传值啊,把这个AF传进来啊,传进来以后这个时候你看输出是不是120了。对不对?哎,怎么做到的,是不是这么说的,你看他调用它,调用它的时候他干嘛呢?他有要求是什么,你的实战必须以引用的方式传递给我,那以引用的方式传递给他,是不是就相当于这里边应该怎么um我的um这个时参对吧?要以引用的形式赋值给了行参,对吧?那是不是相当于此时此刻我这个时参跟我这个行参都是通过同一个地址指向了这一个值。
07:08
是不是这个意思对吧,那么无论是我这个变量还是我这个变量发生改变,那我对应的在在外部,在函数外部输出这个变量时,是不是都是改变的。对不对,哎,这就是咱们的什么,咱们引用传参啊,引用代表什么意思,我的这个时参是以引用的形式传递给了行参,那么函这个行参在函数内部发生改变,我对应外部的值也是改变,对不对?哎,也就是说这个。一。引用方式传递给形参后,行参在函数内部发生改变,那么对应外部的时参值。也是。改变的是不是这样的,哎,这就是什么,这就是咱们的这个引用穿插了啊,那么一般我们引用穿插干嘛呢?都是干嘛,都是从函数内部往外部调值的啊,从内部往外调值的,你看在这里边我是不是no,我给它加完,加完以后什么都没做对不对,什么都没做,但是只要我调用完函数以后,我外部代数是不是就变化了。
08:13
哎,这就是什么,这就是咱们的这个引用啊,引用传参,这个引用传参我们用的还是很多,而且我们引用传参是不是效果类似于什么,类似于一个什么,类似于一个这个全局变量啊。对不对?哎,那OK,那我们来看一下在这里边笔记啊,零论传参他说了,在设定函数形态时,如果在形态变量前添加了and的符号,就表示13传递的时候要以引用的方式干嘛呀。以以这个要以引用传递的方式啊,就是变量引用赋值,将十参的值传递给谁,传递给形参,那么如果使用引用传参,那么在函数内部引用传参的形态值发生改变,那么对应函数的这个外部的实态值是也发生改变的,哎,效果类似于什么全局变量啊,那你看比如说我们在这个系统中啊。
09:01
咱们来看,比如有个函数叫什么泡泡。Popp我是干不他干嘛呢?它是弹出数组中最后一个元素初差,也就是说白了干嘛呢,删除数组最后一个元素,但这里面给个说明,说明什么,你看告诉你传一个数组对吧,然后呢,他给了一个什么按的符什么意思,是不是就是你的数组,你的时差要以引用的形式复制给这个形参。没错吧,哎,那你现在你来看,比如说这里边我们来定义一个数组啊,来在这里边我们来定义。一个速度啊,来到A等于A对吧,然后等于什么呢?比如说等于这个孙间奎。等于溶脂。等于孙建奎啊,等于这个edu啊,等于LY好了,那这里边我写了四个值对吧,那写完以后,接下来你看好了,我要用系统函数叫什么瑞杠跑跑对吧。那么咱们之前也总结过学习函数学习三点,对吧。
10:03
泡泡它的作用干嘛呢?是不是删除?数组中最后一个元素对不对,哎,然后呢,一样,那它的参数呢。P'M参数是不是要删除的数组变量?哎,要删除。数据的数组变量嘛,那也就是说在这里边咱们来看啊A泡。Pop,你要这个?这里面的最后一个元素删掉最后元素是谁呀?是不是l monkey啊对不对,那好了,那删完以后他又给我返回结果吗?我们来看一下打印这个结果啊,来打印。到了I,我们来打印这个结果,你再来看。刷新结果是什么结果?M monkey是不是把m monkey删掉了,我们元素组里面是不是有m monkey啊,哎,那它有改变谁呢?它改变的是不是这个变量对不对?你看这个变量我一引用,前面是不是也给你提示了,要以引用方式传过去。
11:03
对吧,我这是不是调用函数呢?调用函数是不是把这个时参以引用的形式复制给了定义这个函数的形参,那么这个形参在这个函数内部发生改变,这个时候我对应的外部的值是不是也是改变的,来看大A啊,是不是也是改变的。走,你是不是变成了融值,孙向奎1WORK对吧,是不是就没有这个l monkey了,看到了吧,哎,这就是咱们引用传菜啊,所以引用传菜能用到地方很多很多,那你看啊,那在这里边我们现在知道有系统这个功能了,我们这里面返回值补一下啊返回值。Re return什么呀,是这个三。返回被删除的这个元素是不是这样的,那好了,那现在咱们说现在用的是系统函数,我能不能自已定义一个函数,也来模拟写这个功能呢?那也没问题,看好了,我把它放到这儿啊,叫什么呢?要求是。自定义一个怎么样,呃,瑞杠跑跑的。
12:03
功能对吧?哎,模拟删除数组中最后一个元素吧,哎,那好了,那比如说在这里边我们也一样方式来定义,定义谁呢?定义一个MY泡泡,我的泡泡对吧?然后这里面是不是必须要给我传一个数组对吧?必须传一个数组,而这个数轴怎么样,是不是引用方式传过来了,来引用方式传过来了好了,那这是不就可以了。这俩中间没有空格啊,一有方式传过来这么一个数组,对吧,那这个时候我们先不管啊,先不管它里边要怎么写,我们先打印这个数组来打印这个啊,然后我们调用麦泡泡。好了,把数组传进来,我外边是不是也有个AR这个数组来这呢?我们定义这个数组。CTRLC拿到哪儿了,拿到我们这里来看好了啊,在这我给它粘过来,粘过来以后啊,接下来我们干嘛,我们调用过来是不是就打印这个数组啊,那我们来看。来找你这个数组是不是被打印了,打印以后,那这是我传的是数组,这没问题,那如果我改变一下呢,比如说啊,这个我不叫宿组了,我叫什么呢?你看到A啊,等于等于什么呢?我是这么串。
13:05
好,现在你看啊,我这个AR变量变成我是字符串,它是不是一个字符串,是字符串,我是把这个AR也传进来了,那这个时候你来看再来刷新。是不是告诉你实句类型的字串看到了吧?哎,那如果要用系统函数呢,比如说系统函数这里边的MY泡泡啊,你看好了,我在这块也给它改一下,比如说我到了AR变成什么,变成我是字符串,它能删掉字符串的最后一个元素吗?你看他这时候给你提示什么走,你干嘛是不报错了。哎,他说什么呀,数组的这个参数对吧?Prime这个时参十参一怎么样,To Be,这不必须是数组啊。对不对,哎,所以他可以干嘛给你报错了,那我这里边他会报错吗?我把它祝福掉了啊注掉这样的错误没有了,那再回过来,你看我们自己这里边是不是不会报错,哎,那怎么办,我是不是得让他报错呀,也就是说进来以后我需要干嘛,我说要判断呀,如果A。个瑞数是是数组嘛,谁AR对吧,如果它是数组,那么我们进行操作,那如果不是数组呢,取反到放的时候怎么办?我是不是就挨一个叫做什么,请传入。
14:11
传入。一个数组啊,是不是这样的,哎,那现在你来看,这个时候我再来刷新,是不是告诉我请传输一个数组对不对?哎,这是一种限制的方式,那么我还可以怎么限制呢?我可以在它前面直接给他ay类型限制什么意思,就表示你必须要给我传一个什么,传一个数组变量啊,传一个数组变量,那这个时候你再来看,我再来刷新,他是不是给我报错了,他说什么错啊,你看这里边ARGUMENT1对吧。在哪?在这里边,Must be of the。和瑞什么意思?是不是必须是一个数组?对不对,在MY跑跑这个函数里边,所以这个时候是不是我用它做限制也会帮我们报错,哎,所以我把它注释掉,这个我再把它还原起来好了,那OK,那现在我给他限制好了,比如说我就用这种方式限制了啊,限制完以后进来干嘛?进来我是不是要想办法,想办法删除数组中最后一个元素,对不对,那怎么办?是不是遍利数组了,For is,遍利这个数组遍利谁呢?遍利这个Dollar a as k指向的Dollar v好了。
15:13
那咱说了,我在使用fo一次变利的时候,是不是它会循环这个ARAR里边有个指针对不对?第一次它会把这个下边零复制给K,把容值复制给V,第二子复制完以后,你在这个循环体里面正常操作,对吧?然后操作完以后循环继续循环,当再循环到AR的时候,它指针是不是向后移啊,向后移是不是就把一复制给了这个K,把孙建奎复制给了这个刀杯对吧?然后继续进到这里边操作,操作完以后是不是直针又向上了一对吧?当移到最后最后一次复值的时候,是不是就把这个谁0123,是不是把三赋值给了K,把这个l monkey赋值给了Dollar v啊。是不是这个意思,对不对,那也就相当于我的这个Dollar k跟Dollar v的最后一次复值,是不是就是一个三一个二来我们输出输出谁输出Dollar k给他一个边。
16:01
再来输入谁输入到位,那你看我的到位和到K有没有,是不是一个三一个2MONKEY,我是不是得到了,哎,得到了,咱说了最终我要返回的是谁,我是不是I谁啊,这个Dollar v Dollar v是不是被我被删除,我最后删除的是不是R,那Dollar v是不是就是我要删除的这个东西,那我是不是把要删除的这个值返回了,那中间干嘛,我在这里边是不是还要删除啊?是不是要删除速溶作为一个元素?数组中最后一个元素吧,最后一个元素谁呀?最后一个元素是不是AR里的到K是不是这样的,也就是AR里的三是不是数组中最后一个元素,那我通过什么,是不是通过叫做氨。Set的功能,把它删掉是不是就可以了?哎,删掉它以后我来re吞这个被三回的这个值,由于这个变量数主变量是通过引流方式传的,所以它在函数内部,你看我是不是发生了改变,那对应的外部是不是也是改变的,你看好了,在这里边VR-DP,我在第72行再次打印这个arr的时候,你看l monkey是不是依然是被删掉了,来走理是吧,M被删掉了,哎,然后这个函数有没有返回值,有吧,那它返回什么值呢?是不是就返回了一个Dollar,一个结果,那么我们再来打印这个结果,VRDP打印谁打印这个。
17:17
到了re,好了,这个时候你再来看,走你。是不是拿到了l monkey看到了吧?哎,那这个时候是不是就我模拟的什么模拟的这个系统的,呃,瑞泡泡的功能,自定义的一个卖泡泡的功能,是不是跟它一样的效果了,对不对?哎,那这个时候我是不是就用到了什么,用到了引用穿插了,哎,那么这个变量在这个函数内部发生改变,那么对应的我在函数的外部直接打印这个变量是不是也是改变的。对不对,哎,这就是咱们的引用传参啊,这是咱们的引用传参,好了,那这节课就到这里。
我来说两句