00:00
数组面作为函数参数,其实我们这里面在这个前一天例子里面已经用了这个很多个,但是这没有具体的跟大家去说啊,那这里面把这个它里面一些知识点给大家去讲解一下,是指针作为函数参数。作为函数参数。有谁?嗯,其实我们这里面可以写一下,写一个数组啊,是int类型的AR,然后是值为十个。12345678。那这里面不写行不行,是不是不行啊,是不是啊,逗号这个必须有值啊,是九,然后是十。告诉内容十个吧。好,那我这里面写个什么,写个函数,通过函数来看一下啊。Y的,然后是。PT。这里面做操作什么操作打印是不是,嗯,做操作这里面传递过来一个数组,那传递数组正常的样式是不是这样的,因为这里面多少个元素啊。
01:02
十个元素,我写个十看行不行啊啊,然后这里面这个先不写这个值啊,十个元素。打印一下循环in ti等于零,I小于set off AR这个指的是哪个呀?这个指的是这个啊,还是下面这个啊,比如说这里面调用一下是P。PRPTF,然后是A传递过去,然后这里面去打印这个值,看到了吧,我这里面传递过去几个参数,一个参数吧,一个参数,让这里面通过C求出这个AR的值,然后这里面去打印一下。PINTF。白帽地斜杠N逗号一个。AR中的这个I,那问同学一下,能否打印出所有的这个数据呢?啊,这里面传递是AR,是不是是个数组啊,啊好,那我们这里面调试开始执行。
02:01
打印出来的是几个四个,诶,然后我在这里面,比如说这不是数组吗?我这样写反对过去一个什么。十个大小的数组是不是这边接收大小是不是也是十个大小啊,那这个对应的值应该多少啊?是十个吗?还是四个是不是调试开始执行。哎,怎么还挂掉了呢。我看一下这是挂掉的原因啊,是多少个,这是十个吗?啊,Sorry,这里面是不是传错了。啊,这里面如果传递过去一个AR的情况下,这里面对应是一个值了吧,是不是我所以说必须得传什么,传个地址,是不是必须得这么传啊,这里面越界这个东西无所谓了,咱这个传完了吧,同学,那这里面是不是必须得传递个什么,传递过去一个数组名是不是不能传递什么不能传递这个元素,是不是你写个十,这也不对,为啥啊,这是一个值是不是,而且是一个越界的值是不是?那你传九呢?也不对,你传的过去是一个什么十,那到这里面变成一个什么了。也扔了吧,也扔了是不是啊好,那所以说这里面必须传递过去一个数组名,是不是这块就要搞等数名,那我接收了之后,那你看这里面每次打印都是什么呀。
03:10
只是都是这个是。四啊4U就是无符号的int类型,是不是就跟大家说过了吧?啊,那这里面看一下为什么每次都是四呢?因为它把这块这是不是一个地址啊。他不再把它当做一个数组去看待了,而是一个地址,它这里面接收过去也是接收一个地址,即使你写个十,他也把这个当做一个地址看待,什么样的地址啊,是一个。印的星的形成地址,所以说这个AR求来这个值永远的值为几啊?四对,这里面注意一个问题,就是函数。参数中。如果有。指针啊,这是指针啊,还有什么数组,这两种都会。转化。为指针啊,第一种就无所谓了啊,就只是说第二种如果有数组的情况下,那就怎么呢?就会转化为指针,那转化为指针情况下,这个size of求来的是什么呀?Size of。
04:10
求出来的这个是什么?是一个指针类型的大小,是不是永这个值永远为喜啊?为四是一个无符号的,无符号的这个数为无符号应类型的四是不是,所以说这里面这个size of它就不能作为一个什么存在啊。不能作为一个循环条件存在了,是不是啊,所以。所以这个是呃,求出来的值。不能作为。数组。数组的循环。条件存在。那除非是怎么的,除非你这个数组大小是几个。四个是不是正好四个才可以,否则情况下就出错了吧,所以说这里面我们在写数组的时候,一定要传递过来一个东西,什么东西啊。
05:01
In的类型的,这个length是什么?是它的长度,不传长度的情况下就会出现刚才这问题是不是,那怎么传长度呢,Set off。A,这是长度吗?减一是减一吗?还是这样写啊,再A0这块你还给我告诉我减一吗?现在减一还是不减一啊。再减一啊是这样传递过去,那传递过去这是减一的情况下,这用改吗。来,我看一下打印的值对不对,为什么要写一啊?123456789少一个是不是少一个十这块减一吗?不减一是不是不减一啊啊调试开始执行。就这里面没问题了吧,这是我们数组的情况下,如果是这个整形,呃,是整形数组或者float类型数组以及double类型数组全用这种方式操作是不是,但是有一种数组不是这样操作,什么数组啊。
06:02
字符串类型的数组是不是或者或者我们叫字符数组,那我们再看一下它应该如何操作啊,这里面改成这个是普零一,然后这是。301,这个也是301。这零一啊,这是零一,再写一个,在下面继续写了E类型MN括号。外。定一个定一个数组是差类型,数组差类型的。AR让它等于一个。Hello w o r。Hello word,那我这里面怎么去传递hello word,然后去打印出这个hello值。PT再写个PT啊。WHY?然后做的操作,什么操作是这个。打印PT,然后括起来。
07:07
我这里面如果是字符数组的情呃字呃字符串的情况下,我就需要传递一个值就行,为什么传递一个值就行啊呃呃,这里面是可以去操作一下,是AR去打印一下啊。Re。U。我们这里面看一下在做什么呀,在做这个。字符串打印的时候,我这里面或者在字字符串操作的时候,并不只是打印啊,这里面只是传递一个参数型,为啥呢?有两种方式。两种方式可以求出字符串。长度,但是如果是数组求完,你就没办法求,为什么啊,因为数组后面这个你你也不知道这个越界下面是一个什么样的值是不是啊,你没办法进行一个什么呀判断是吧?是判断它的区间大小,没办法判断,但是字符串可以,为啥?因为它有一个字符串结数标志为斜杠零啊注意一下是斜杠零,那我可以通过怎么呢?是s tr lens,然后是什么是这个。
08:17
AR是一个什么类型的,是一个指针类型,是不是这里面要的就是要什么类型啊,指针类型是不是可以求出来它的有效长度,Lengths,这是第一种方式求出来的,还有第二种是什么呢?我们自己写一个通过循环,循环什么呀,循环AR中的这个。DX值int类型的I等于零,然后是。I,然后是不等于斜杠零,然后我们可以操作,操作什么呀?让这个I进行一个加,加到最后结束的时候,这个I就是什么,就是这个长度是不是两种方式都可以啊,然后可以进行一些操作,比如说这个判断啊,或者是这个循环啊,或者是一些这个取值啊,是不是都可以操作啊,这是我们字符串和这个是其他类型的数组的一个区别。
09:02
但是我们还有一种方式叫什么字符数组,什么叫字符数组啊,在这写一下。是差,然后是AR,然后是。等于。喝。然后是。呃。了。了。我那如果如果这样写的情况下,我需要传递这个个数吗?需不需要,为啥需要啊,没有标志,因为没有结束标志,所以说不能作为判断条件,只有这个字符串这里面可以用用这种方式直接传递过去一个值就可以,这是跟其他的这个数组区别,所以说如果说。指针作为函数参数,就或者说数组作为函数参数,有两点需要大家记住的,第一点可以退化为一个什么呀指针,然后第二点必须传递过去一个具体的。呃,是数组的长度,那把这两点写一下是第一点,班长。
10:02
啊,是。数组。作为。函数参数可以。退化。为指针,那退化是不是有缺点,缺点就是我们第二个需要这个满足条件,什么条件就是。在传递。传递数组时。需要加上数组的。个数或者叫数组的这个元素啊,不是长度,长度是它那个40啊,这里面得求出来它的元素个数是不是啊,这这两点啊,我们需要注意一下,那好,那我们再继续往下写啊,在这里面再来例子。玩保存呀,这是零几啊是。302。右击添加一个新斜向。然后是。
11:01
零四。叫。函数的。返回值。返回值是指针。点C添加。井号一,那我们去写一下这个代码啊,那首先这里面什么是这个。函数的返回值可以作为,呃,不是函数的返回值类型可以作为什么呀,可以作为这个是指针的,那我们这边写一下,比如说我要做一个这样操作差氢,然后是。Test test是没有这个名今天没起的吧,然后这里面没有传递参数啊,这里面这个是参数列表为空,我这里面定一个差星,呃,不是差AR,然后它的值为。哈勒勒窝,Word写个呃呃,不加型杠了,这打印之前不加斜杠,然后re return一个A。
12:06
我这是个什么呀。数组是不是,那数组是不是它也是这个差星类型的,因为这俩这俩类型相同嘛,那我看一下这里面去打印一下。加呃,不是这个是先调用函数啊,是test,这test是一个有什么呀,有反问值的,反问值是什么类型,差星类型,所以说我在这里面接收的时候,用差星类型来接收,接收完之后,那是不是这个对应的是一个什么呀?地址是不是地址,能不能找到这个hello word呢,我们去打印一下。PTF。百分号S,斜杠N,然后逗号一个P。能不能打印出来这个值啊?啊,有的说可能会当啊,但是我这里面再打印一个值啊是PT。是摆放P,然后是。
13:00
写杠N逗号一个P,打印俩值,第一个什么,我看一下这个里面是不是有具体的地址,是不是啊,这是我们第一个,然后第二个是打印出这个字符串来,是不是调试开始执行。打印出来的什么,打印出来这个地址是有的,但打印出来的什么是呃,特别烫,然后后面加上什么,加上这个是一个玉,后面加个鸟,这啥意思不知道。乱码,反正我们知道是乱码是不是对了,但为什么这里面hardwork我到这里面就打印不出来了呢?然后但是地址我是能获取到的,地址对应的字符串应该是前面这个内容啊是不是,但为什么没有呢?这里面大家说一下这里面是个什么呀?函数的调用,是不是在调用的时候我会创建这个函数,是不是创建哪个函数是差AR这是个什么呀?数组是不是啊,破解完这个数组之后,我把这个什么这个数组是不是有地址啊,返回值返回去,但是返回回去这个地址可以被下面这个什么差星P接收到,但是这个已经被销毁掉了,因为这是在函数内部去做的,是不是?那那我改一下,改成这种类型,比如说这差星和数组是一样的,那我的星星AR,然后这里面传递A呀,那你说这样的情况能不能打印出hello word这个值啊。
14:22
可以可以可以的,可以的,有同学说可以,有没有同学说不可以啊。啊是看看吧,是不是不确定是不是,那我们看一下啊。打的什么呀?发word,为什么这里面只要改改,改了仅仅一点就没有问题了呢?这里面这个首先需要注意一个问题,如果说这样写的情况下。它是一个数组,是不是或者叫我们称为什么称为叫字符串?呃,字符数组吧,呃,字符数组是不是它对应的创建的位置创建。
15:03
To。创建位置在战区中,这咱们后面学的时候再跟大家说啊,但如果说你这样写的情况下。行,哎,我等会儿啊,先先等会先复制一下,再拿过来把这个先注销掉啊。如果是这样写的情况下,哪种方式写的是前面加个星。这两种方式都可以去什么呀,去实现,那这种是什么,是一个指针,指针指向了一个什么呀?Hollwood这个hollwood就变成了一个叫字符串常量,咱们在打印的时候,是不是咱们打印的时候直接说过一句话,这叫字符串常量,是不是第一天讲课内容不是就是在元第一天讲说过了。哈,是个字符串常量,用双引号一起来的称为字符串常量,但这个不是啊,这个叫字符串。字符串。常量坐标常量。他会在程序。会在程序。
16:03
运行时。什么叫运行时啊?就是程序刚启动起来的之后,它就把这个hello word放在了常量区啊,另外一个区啊,咱们这前面站区,这是什么常量区,是不是常量区放在常量区,所以说它会它的生命周期是在程序起来时运行,在程序结束时怎么的结束,它的地址一直是怎么的。存在的,或者是怎么着,或者是这个没被没有被销毁,所以说我在这里面运用的时候,怎么着才能找到这个对应的值吧,这个值是可以被找到,所以说这里面写的时候也是有不同的,而且这个里面在常量区。呃,Hello word这个怎么样?这个单词是不能被修改的啊,但是可不可以读啊,是不是刚刚才咱们就是一个读的过程,是是,但是不能修改啊,它的生命周期咱们后面会学,在程序运行起来的时候,这就是hello word运行起来了,你别看它这个是在一个什么函数中运行的是不是,但是因为它是一个什么,是一个常量,所以说它说明就是程序在编译的时候,他会把所有的常量单独提出来是不是啊,然后在程序加起来之后,就把这个东西放在你存中放好了知道吧,你在用的时候直接拿回来就用,是不是啊,就是这个过程。
17:17
啊,不能被修改,在程序结束时他才怎么销毁,在程序结束时销毁。这是什么,这是这个东西啊,所以说这里面注意一个问题,在函数这里面写的内容。除了常量之外,其他的都会被销毁掉,能明白这话意思吗?除了常量,当然也不止常量,还有什么这个static,这是什么?静态变量啊,以及这个我们写的这个,比如说定一个in类型的,这个是AA等于等于十,在这里面,比如说这里面操作一个什么,操作一个AA,你先不会,你先知道这个有这块内容就行啊,你不用管啊,这块AA等于100,那这个AA它也不会消毁掉,这里面这几种方式大家知道呀,常量是不会啊,然后是呃不是这这是这是一个什么全局变量是不是,然后常量以及这个磁修饰的静态变量,常量都不会被在函数内部被进行销毁是不是,但是如果是大家创建那些变量,那可能怎么的。
18:17
可能销毁掉了是不是啊,这个咱们注意一下这个问题啊。而且注意的第二个问题是什么?就是类型要保持一致,这里面返回的是一个指针类型对应的,我这里面返回的也是一个什么呀。指针类型啊,但指针类型返回之后,你一定要保证这里面指针类型是有什么的。保证指针地址。对应的值是有内容的,为什么要内容呢?把这个假如销毁掉了,地址有没有有对应到我们这个操作是不是也可以啊,到这来接收是不是也没问题啊,但是我需要获取这块对应地址的值的时候就出现问题了,是不是因为销毁掉了嘛,所有里面全是乱码了,是不是这就是他的这个问题啊。
19:04
那当然这里面我们之前做过一个例子,在上一天这里面做一个差星类型的HRCHR,呃,不是是CR那个例子吧,啊,这里面还有个例子,是哪个例子咱们没做呀。嗯。STRSTR这个是不是没做啊,它是不是也是反应什么呀。返回个地址,是不是返回怎么第一次找地址,比如说这里面有什么,有个这个是呃哈窝,我要word,然后我又另外一次,不知道叫什么叫。Lo,是不是我要找?Hello,我是lo,对应hello这个什么地址是吧,把它返回去,这个会比咱们上上面那个例子更有难度,咱们用指针来操作一下,先把这保存一下,咱们去。
我来说两句