C语⾔--⼀维数组和多维数组数组名的含义
⼀、⼀维数组
对于⼀维数组,我们很容易理解数组名和元素地址的关系,即数组名代表数组⾸地址,亦即第⼀个元素的地址。
如定义数组int a[9]={1,2,3,4,5,6,7,8,9},则由上⾯的说明可得
a=&a[0],*a=a[0];
a+1=&a[1],*(a+1)=a[1];
.........
⼆、⼆维数组
二维数组下标怎么理解对于⼆维数组,我们⼀定要记住:它是数组的数组。如定义⼀个⼆维数组int b[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},此时我们知道,可以把b看做是⼀个有三个元素的数组,分别是b[0],b[1],b[2];每个元素(b[0],b[1],b[2])⼜都是有四个元素的⼀维数组。那么,此时的数组名代表什么呢?
按照⼀维数组的思路去思考,b代表第⼀个元素的地址,那么这⾥的第⼀个元素应该是⼀维数组b[0];⽽b[0]⼜是⼀维数组的数组名,也就是说b[0]代表数组b[0]中的元素⾸地址。这样⼀来就可以得到:
b=*b=b[0]=&b[0][0],**b=*b[0]=b[0][0];
*b+1=b[0]+1=&b[0][1],*(*b+1)=*(b[0]+1)=b[0][1];
......
b+1=*(b+1)=b[1]=&b[1][0],**(b+1)=*b[1]=b[1][0];
*(b+1)+1=b[1]+1=&b[1][1],*(*(b+1)+1)=*(b[1]+1)=b[1][1];
......
⽤图⽰的⽅法为:
在内存中,他们是⼀维排列的,如下图所⽰:
三、多维数组
对于多维数组的分析,和⼆维数组是⼀样的,始终记住:多维数组就是数组的数组。