指针与一维数组、二维数组的等价互换关系

在这里插入图片描述
在这里插入图片描述
1、 对于任意二维数组 int a[ROW][COLUMN] 来说, a+i 表示行指针,而 a[i] 标识列指针(其中 i 表示某个整形值) ,行指针转化为列指针是通过在行指针前面加“ * ”运算符做到,而列指针转化为行指针是通过“ & ”来做到。如 Fig.1 所示:在这里插入图片描述
2、 在二维数组 int a[ROW][COLUMN] 中,可以认为划分为三层,最高层为行指针,中间层为列指针,而最底层为元素。由高层到底层可以通过 ”*”运算符来做到,而由底层到高层可以通过 ”& ”运算符来做到。如 Fig.2 所示:在这里插入图片描述
3、 对于二维数组 int a[ROW][COLUMN] 来说,行指针的本质就是一个指向包含 COLUMN个元素一维数组的指针 也就是 int (*p)[COLUMN] ,而列指针的本质就是一个指向元素的指针,也就是 int *p;

4、 对于一维数组来说,总结出的一个通用公式是 a[x]= * (a+x) = * (x+a)=x[a] ,这也就是我们既可以用 a[3]也可以用 3[a]的原因;而对于二维数组来说,总结出的通用公式是a[i][j]=* ( *(a+i) +j )

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章