学习笔记--二维数组

 

二维数组int a[2][5]和一维数组int b[10]其实没有任何本质差别。

1、二维数组a和一维数组b在内存使用效率、访问效率上是完全一样的(或者说差异是忽略不计的)。

 

2、二维数组的下标式访问和指针式访问

(1)一维数组的两种访问方式。以int b[10]为例, int *p = b;。
b[0] 等同于 *(p+0); b[9] 等同于 *(p+9); b[i] 等同于 *(p+i)
(2)二维数组的两种访问方式:以int a[2][5]为例,(合适类型的)p = a;
a[0][0]等同于*(*(p+0)+0); a[i][j]等同于 *(*(p+i)+j)

 

3、a[i][j]等同于 *(*(p+i)+j)

(1)p不解引用 ,对p的加减是在第一维里偏移地址

(2)p解一次引用,对*p加减是在第二维里偏移地址

(3)p解二次组长,才能访问到值,如*(*p)

 

posted @ 2021-05-03 13:06  Ben002  阅读(92)  评论(0编辑  收藏  举报