C语言二维数组&a[3]+4代表什么
假设这个数组是a[5][5],那么&a[3]代表的应该是a[3]这一行数组的首地址,4个步长是4*4*5=80,这样理解对不对,a[3]存储的是a[3][0]的地址,那么...
假设这个数组是a[5][5],那么&a[3]代表的应该是a[3]这一行数组的首地址,4个步长是4*4*5=80,这样理解对不对,a[3]存储的是a[3][0]的地址,那么&a[3]代表的到底是什么呢
展开
4个回答
展开全部
char *p是一维的, str是2维的,p=str,二者不匹配。str[0]是一维的,与p同类型。 a与a[0]只是在使用a的首地址这个值时意义才一样。 a是地址,*a是取a这个地址中存储的一个byte.[看数值类型,如果是整数,则是取整数]
追问
我今天想了想,你说的其实是对的,上面一个回答者没有看清楚题目,他以为我是在问一维数组的问题,事实上我问的是二维数组的,但是&a[3]+4和a[5][5]这个数组并不匹配,所以我提问的说法其实根本不成立,而上面的回答者回答的是一维数组的&a[3]+4的答案,假设指针是pa,那么pa=&a[3],&a[3]+4也就是这个指针偏移了4*sizeof(pa),还是感谢你回答这个问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
二维指针可以分为两层,底层指向数据,第二层指向第一层的指针,也就是指针的指针,a[3]存储就是第4个指针的位置,加上4也就是在第四个指针位置那在偏移4个数据长度
更多追问追答
追问
你的意思是a是第二层指针,指向a[0],a[0]是第一层指针,指向a[0][0],a[0][0]是底层,指向数据,a[0][0]也是指针吗,数据不是直接存放在a[0][0]中吗
追答
a[0][0]相当于*(*(a+0)+
0)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询