C语言简介---通过指针引用多维数组
在理解C语言中的二维数组时,我们通常用矩阵的形式来表示二维数组,但这只是逻辑上的概念,但是在内存中,各元素是连续存放的,不是二维的,是连续的。
从二维数组的角度来看,a代表二维数组首元素的地址,现在的首元素不是一个简单的整型元素(以int a[3][4]为例),而是以四个整型元素所组成的一维数组,因为a代表的是首行的首地址(行号为0),a+1代表序列为1的行的首地址。
a[0]和*(a+0)等价,a[1]和*(a+1)等价,a[i]和*(a+i)等价。a[0]+1和*(a+0)+1都是&a[0][1]。
解析:a+1是二维数组a中序号为1的行的首地址(序号为0起算),而*(a+1)并不是a+1单元的内容值,因为a+1并不是一个变量的存储单元。也就谈不是它的内容。*(a+1)就是a[1],而a[1]是一维数组名,所以也是地址,它指向a[1][0]。a[1]和*(a+1)都是二维数组中地址的不同表现形式。