C语言中的二维数组里a+1和*(a+1)为什么都是地址

 我来答
帐号已注销
2020-12-24 · TA获得超过77万个赞
知道小有建树答主
回答量:4168
采纳率:93%
帮助的人:161万
展开全部

二维数组又包含多个一维数组,a指向第一个一维数组的首地址就还是地址。

a+bai1应该是 (a+0)+1

这里的a是二维数组中的二级指针

数组名为a[0]的一维数组(表示行)

也是数组名为a的一维数组(表示列)

后面的1表示行数组移动1行

0表示列的移动

所以是1行0列的地址

*(a+1)中a是二级指针

取值二级指针是一级指针

一级指针指向的一维数组(二维数组中的行)

一维数组移动一位只能是向下移动也就是行

所以就是 第一行的首地址,也就等于二维数组中,第一行零列的地址。

扩展资料:

二维数组A[m][n],这是一个m行,n列的二维数组。设a[p][q]为A的第一个元素,即二维数组的行下标从p到m+p,列下标从q到n+q,按“行优先顺序”存储时则元素a[i][j]的地址计算为:

LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t

按“列优先顺序”存储时,地址计算为:

LOC(a[i][j]) = LOC(a[p][q]) + ((j − q) * m + (i − p)) * t

存放该数组至少需要的单元数为(m-p+1) * (n-q+1) * t 个字节 [1]

参考资料来源:百度百科-二维数组

文正153
推荐于2017-10-26 · TA获得超过2.1万个赞
知道大有可为答主
回答量:2221
采纳率:63%
帮助的人:618万
展开全部
二维数组, int a[10][20];
a是一个指针的指针, 即二级指针.
一个指针加一个数, 当然还是指针(即a+1是指针)
取值一个二级指针, 是一级指针(即指针), 所以还是指针, 不过类型发生了变化.
a+1的类型为int *[10].
而*(a+1)的类型则为int *, 也就是平常的指针.
如果你学习二维数组是用心, 你就会知道不存在二维数组, 二维数组其实是一个包含数组的数组, 即数组的每一个元素还是一个数组(这点有点像面向对象的思维).
所以a[0]就是取第一个元素值, 而第一个元素是数组, 所以其值仍是一个指针.
答了这么多, 一看问题, 发现是"地址".....地址和指针是一个东西.
追问
额 没看懂
追答
就比方说, 一头猪吃了一颗草, 然后一条狼把那头猪吃了(整个), 然后人去解剖那只狼, 解剖了一层发现了一头猪, 然后又解剖, 又发现了一颗草.
这和那是一个道理.
int a[10][20], 它定义了一个长度为10的数组, 其中数组中的每个元素又是一个长度为20的数组, 这个数组的每个元素是int型.
还可以理解成一个班里有几组, 然后组再往下的才是人. 一个班是一个集体, 一个组也是一个小集体.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友cb829fb
2018-08-18
知道答主
回答量:1
采纳率:0%
帮助的人:827
展开全部
a+1应该是 (a+0)+1
这里的a是二维数组中的二级指针
数组名为a[0]的一维数组(表示行)
也是数组名为a的一维数组(表示列)
后面的1表示行数组移动1行
0表示列的移动
所以是1行0列的地址

*(a+1)中a是二级指针
取值二级指针是一级指针
一级指针指向的一维数组(二维数组中的行)
一维数组移动一位只能是向下移动也就是行,
所以就是 第一行的首地址 也就等于二维数组中 第一行零列的地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zh呼啸而过007
2019-02-20 · TA获得超过101个赞
知道答主
回答量:5
采纳率:0%
帮助的人:3401
展开全部
例如a[5][10];
a + 1的值是第二行的首地址,
* (a + 1)得值也是第二行的首地址,
但是a + 1不等于a[1],而* (a + 1)等于a[1]。
如果给a+1再加1,就是a+1+1,就是a+2,它的值是第三行的首地址
如果给*(a+1)再加1,就是*(a+1)+1,它的值是第二行的第二个地址
他们移动的区别:前者是纵向的,后者是横向的。
指针类型的区别:两者均存放为同一地址,但前者是指向一维数组,后者是指向元素的。
实际就是前者每次跳动4*10个字节,后者每次跳动4个字节。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Tlier丿残刀
2020-03-30
知道答主
回答量:2
采纳率:0%
帮助的人:1345
展开全部
二维数组又包含多个一维数组 a指向第一个一维数组的首地址就还是地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式