【C语言及程序设计】二维数组、数组指针和指针数组

二维数组可以看成一个以一维数组作元素的一维数组,因此,二维数组的储存和指针操作上很容易让人产生困惑:

假设有一二维数组

a[3][4] = { {1,2,3} , {4,5,6} , {7,8,9} }

a——二维数组名,实质是 以{1,2,3} , {4,5,6} , {7,8,9}为元素的一维数组的首元素的指针,其值为 a[0]的地址(简称 行地址)

a[0] ——一维数组名,实质是 以1,2,3为元素的一维数组的首元素指针,其值为 a[0][0]的地址(简称 列地址)

a[0][0] ——二维数组a[3][3]  和一维数组(子数组)a[0] 的元素

 

由此可知,

a+i=&a[i] 行地址相等 对应的指针为 数组指针 如 (*p)[4]

a[i]=*(a+i)=&a[i][0] 列地址相等 对应的指针为 普通指针 *p

 

但a 不是指针数组

 

 

 

 

 

=

posted @ 2018-08-22 15:15  Miyazakehime  阅读(170)  评论(0编辑  收藏  举报