在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]吗
展开
1个回答
展开全部
多维数组中指针和一维数组中的指针是不一样的,以二维数组为例来说;
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]的另一种表示方式,
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]的另一种表示方式,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询