c语言 为什么*a和a指向同一个地址?*a不是取地址里面的内容吗,就是取值。看不懂

如题所述

c语言里二维数组是一维数组所组成的数组
short a[3][4]; 有3个元素,每个元素都是由4个short组成的数组,注意,每个元素都是数组
*a就是a[0], 有上面说的可知,a[0]是个数组,那自然就是个地址了
可以再加一句:
printf("%d\n",**a); // 这个就是a[0][0]了追问

为什么a[0]和&a[0]是一样的

追答

举个例子吧,比如a[3][4]是个3层的楼房,每一层是4间房
那么a就代表整栋楼,a[0]就是第一层,起始地址是一样的,不过含义不同
a+1到第二层的门口了,a[0]+1到第一层的第二个房间的门口了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-21
这涉及到多级指针,a是地址,*a取到的是行的首地址,也就是a[0],如果要取值要用二级指针,**a=a[0][0]追问

a不是行的首地址吗

相似回答