在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]的另一种表示方式,
追问
哈哈,我已经搞懂了。a=&a[0]
*a=a[0]
a[o]=&a[0][0]
所以:从数值上来说a=*a=a[0]=&a[0][0],都是指向地址的指针,只是意义不同
谢谢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询