在c語言中,二維數組與指針之間中有着密切的關系。
一般來說,二維數組的表現形式為a[i][j],而在指針中,與這個表現形式相同的指針形式為*(*(a+i)+j);
為什么要這么表示呢?
首先我們理解二維數組,二維數組就是一個平面,里面有很多小格子,格子里面可以儲存元素,一般都是按行按列順序排放。我們不妨轉化一個角度來看:二維數組就是一維數組。為什么這么說呢?
實際上,二維數組就是有多個一維數組組件而成的,把二維數組看作一維數組,一維數組里面的每一個元素,恰好又是一個一維數組
(電腦繪圖太難了嗚嗚嗚,將就着看吧)
然后我們從一維數組的方式去理解指針,一維數組一般a[n],指針上表示通常為*a,那么,一維數組里面元素的地址,我們該如何去表示呢?這時的表示方法就應該為*a[i]+j,也可以表示為a[i]+j,這時,我們要取出里面的元素,就應該為*(*(a+i)+j);這時我們要把“a[i]”這個指針,要當作列來看,第i個就是所謂的第i行的元素,加上j后,就是在第i行的基礎上,在偏移j個字節單位(看類型),這樣我們就可以得到第i行第j列的元素了。這個時候,二維數組的運算法則就可以運用到指針上面來了;