在指针中,先定义int a[3][4],则a+1和&a[1]表示行地址吧,a[1],*(a+1)表示列地址,为什么他们能这样表示呢

或者说a+1,&a[1]和a[1],*(a+1)有什么区别....... 或者说a+1,&a[1]和a[1],*(a+1)有什么区别.... 展开
 我来答
盏迭起挂啥bO0e6
2012-10-21 · TA获得超过308个赞
知道小有建树答主
回答量:283
采纳率:100%
帮助的人:179万
展开全部
这个理解需要有一张图:
a {0,0,0,0},
a+1 {0,0,0,0},
{0,0,0,0};
要理解这些首先要建立起两个概念:行地址和列地址,
比喻一下:行地址--就是排长;列地址就是班长,排长管班长--对行地址取值就表示列地址,班长管战士---对列地址取值就表示具体的元素了。
这样就好理解了:
首先分清楚一个数组只有一个排长,然后又多少行就表示有多少班长。
a表示第一个班长,那么a+1就表示了第二个班长,也就是属排长管的范围,属行地址。
a[1],取行地址所指向的值了,就地址降级,也就是降到班长所管的范围,也就表示具体的a[1][0]的地址了,然后再&a[1],又地址升级,就变成排长管的范围,也就变成行地址,也就表示第1行的地址。
*(a+1):首先a+1,还是在排长的管辖范围,表示第1行的行地址,然后出现取值符号*,地址降级,就变成列地址,就表示具体的第1行第0列的地址了。
不知道你理解没,这个里面还是不要去对比具体地址那样不好理解,这样分级理解才好理解。
gui_happy
2012-10-20 · TA获得超过2091个赞
知道大有可为答主
回答量:4276
采纳率:42%
帮助的人:2905万
展开全部
二维数组可以看做一维数组,而一维数组中每个元素又是一个一维数组,你可以就好理解些
a表示一维数组中第一个元素,而该元素又是一个一维数组,所以表示0行地址,
a+1 表示1行地址
a[1]表示一维数组中第二个元素 ,a[1]又是一个数组,&a[1]表示1行地址 a[1]表示1行0列的地址
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式