在c指针的通过指针引用多维数组中,为什么a[0]和*(a+0)等价

我知道a[0]是&a[0][0],那为什么*(a+0)会是一个指针呢,a不是是&a[0][0]吗,那*a不应该是一个指针所指向的地址里面的值吗,不应该说*a=a[0][0... 我知道a[0]是&a[0][0],那为什么*(a+0)会是一个指针呢,a不是是&a[0][0]吗,那*a不应该是一个指针所指向的地址里面的值吗,不应该说*a=a[0][0]吗 展开
 我来答
silenceandluo
2016-09-29 · TA获得超过1046个赞
知道小有建树答主
回答量:713
采纳率:0%
帮助的人:273万
展开全部
多维数组中指针和一维数组中的指针是不一样的,以二维数组为例来说;
int a[3][4];// 二维数组的每一行都可以看成是一个一维数组
数组名a 是二维数组的首地址
a+0 也是二维数组的首地址,也可以看成是二维数组行下标为0那行的首地址
a+1 是二维数组行下标为1的那行元素的首地址
a+2 是二维数组行下标为2的那行元素的首地址
a[0] 是第0行的首地址,也是第0行第0列的地址
a[1] 是第1行的首地址,也就是第1行第0列的地址
a[2] 是第2行的首地址,也就是第2行第0列的地址
*(a+0) 这里的*号不是取内容符号,根据一维数组和指针的关系,*a(+0)指针a[0]的另一种表示方式,
追问
哈哈,我已经搞懂了。a=&a[0]
*a=a[0]
a[o]=&a[0][0]
所以:从数值上来说a=*a=a[0]=&a[0][0],都是指向地址的指针,只是意义不同
谢谢
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式