指针与数组-----------指针类型定义

12 篇文章 0 订阅
6 篇文章 0 订阅

前言:
对于指针:定义指针时,要明确指针的类型和指针指向的类型。
指针的类型:直接去掉变量名,剩下的就是指针的类型。
指针指向的类型:去掉变量名后,在去掉一个
,
对于数组:同理,定义一个指针指向一个数组时,首先应该明确数组类型及数组元素的类型。
数组的类型:直接去掉数组名,剩下的就是数组的类型
数组元素的类型:去掉数组名后,再去掉一个方括号[ ],剩下的就是数组元素的类型。
*

例:int arr[2][3][5];定义指针指向该数组,该如何定义
对于多维数组而言,其本质就是数组的元素也是数组(俄罗斯套娃儿~),因此,我们将数组拆开,一层一层的来看如何定义指针

首先,数组的类型为int [2][3][5],由于定义一个指针指向数组,那么我们只要知道指针所指向的数组元素的类型,即可定义指针。
对于int arr[2][3][5],按照上述方法,对于第一层,arr[2](把后面省略的[3][5]当成是数组元素,暂且不把他看成数组,即我的眼里只有[2]是主角,其他的都要依赖于我),我们可知数组有两个元素,且每个元素的类型如下:
在这里插入图片描述因此,定义指针类型为:int (*p)[3][5] = arr;
对于第二层,arr[2][3](忽略[5]),由于多维数组的本质是数组套数组,则我们可以知道首先数组有两个元素,其次,数组的每个元素又包含三个元素,则每个元素的类型如下:
在这里插入图片描述

因此,定义指针类型为:int (*p)[5] = arr[i];(i = 0,1)(和int (*p)[5] = &arr[i][0]的意思相同)
这里为什么是arr[i]呢?
在上面我们提到,数组名表示的是数组第一个元素的地址,那么此时我们将arr[i]看成是数组名,则arr[i]实际上表示的是一个地址(前提是arr[i]里的元素也是数组,此时arr[i]表示的就是第一个元素的地址:例如:int arrtest[3][4],则arrtest[0]就等效于 arrtest[0] == &arrtest[0][0],arrtest[1] == &arrtest[1][0],arrtest[2] == &arrtest[2][0])

对于第三层,arr[2][3][5],我们可以知道数组中每一个元素的类型都是int,则每个元素的类型如下:
在这里插入图片描述因此,定义指针类型为:int *p= arr[i][j];(i = 0,1;j=0,1,2,)(int *p = &arr[i][j][0]的意思相同)

同理,arr[2][3][5]里面的就是整形数了,有 int t = arr[i][j][k];(i=0,1;j=0,1,2;k=0,1,2,3,4),就是对整形数赋值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bug.Remove()

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值