指針與一維數組、二維數組的等價互換關係

在這裏插入圖片描述
在這裏插入圖片描述
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 )

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