指针讲解(四季发财)

同一个地点,不同的时间,时隔一坤天,我又来了。还是那句话:那年我双手插兜,不知道什么叫对手。错了,前面的是这个的基础建议先看前面两章。这个是上文网址指针讲解(三羊开泰)-CSDN博客,一定要看,不然我怕你没有吸收前面的就来看后面的,你到时候看不懂了,就说这个作者不行讲的不够清楚。那就是我背锅了啊。

我们先来复习前面的一个小内容。数组指针记得不,记不得也没关系,继续重开了(看上一个就可以了)记得的就知道,数组指针是一个指针,只不过是指向数组的一个变量。对还是不对。那自然是对的了。这个是学习下面的基础。先带你们复习一遍。

现在我们开始正题,我们知道我们在创建了一个别的函数的时候(除了main函数的函数)我们,如果想要在这个函数操作的时候,我们就需要传参,假设我们创建了一个二维数组,想要传到别的函数去,我们可以怎么传。

这种写法大家都会写吧,但是有一个要注意的就是什么,我不说。有没有眼尖的小伙伴发现了。

对,你们没有发现。还是要我啊,我的arr【】【5】前面的行没有写,这个可以吗,哎这个是我故意的,就是为了讲这个知识,就是二维数组的创建是可以没有行的,但是列一定要有。那这是为什么呢?现在我就来和你们讨论讨论这个东西。

你们想如果一个数组如果没有了列他有行,同时他也初始化了。你会怎么排,是不是如果一共有10个元素,有5行,你们就10/5嘛,每行2个是不是。你觉得这样可行吗,如果我是6行呢,10/6,额你怎么搞,噢,每行一个多的四个在放到随便哪行,这样是不是就有不确定性。你自己都不确定,你怎么让电脑确定。那没有行有列为什么可以确定呢,因为一列就怎么多个人,你就是神仙来了都只能放这么多,就有杠精说那我第一行不放满,那他也不确定了,确实,我学习的时候也是这么想的,但是没有办法,他的规则就是这样。只能记了,你就记二维数组一般都是行少,列多。是不是就不高,比较胖啊,那他就没H嘛(hang)

既然我们把arr【】【5】传过去了,我们怎么接收,最简单的就是,怎么传怎么接,就上面的那种用法用一个二维数组来接,但是这些都只是表象,我们要看本质,我们传数组传的是首元素的地址,记得不。不记得重开(真的,如果没基础的话,真的,先把前面的吸收了,可以大幅提高你对指针的看法)又我们是二维数组啊,首元素地址那不就是第一个元素啊,啊……,真的吗。呸,假的。那个是首元素地址的首元素地址了,二维数组的首元素地址是第一行,对,就是第一行,那第一行的数值呢

对,上面其实说是第一个元素其实对了一点,这个就是读书读一半,读书读一半会害死人啊,不行啊。我来和你们分析一下,&arr,这个拿到的是第一行的地址,&arr【】【0】这个是第一个元素的地址,虽然在数值上是一样的,但是类型不一样,有人看出来了吗。

&arr是第一行的地址是上面类型,我们上面学了哦,想出来了吗,这个第一行的地址,噢,是一个指针,但是第一行不是有几个元素吗,一个指针又指向了几个元素,不就是数字指针吗。破案了,数组指针,原来我们在main函数里面,我们传了一个数组指针变量过去啊,那我们可不可以用一个数组指针变量来接收呢

是不是可以,但是有没有人想,既然我传了一个数组指针,那为什么,在print函数里面,可以用arr【i】【k】,这个又是前面说的,arr【i】这个计算机会自动看为arr+i,而这个怎么算呢(这个有问题吗,有问题就重开,这个就要从指针的第一个开始了)arr的大小的多少,数组指针嘛,大小接收一个数组嘛,那加几就跳过几个数组嘛,简单。arr【i】再解引用就可以到我们想到的那个数组了,arr【i】再加k,就到我们想到的元素了。这个就是二维数组的传参。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值