C語言教學--二維數組和指針的理解

        對於初學者對二維數組和指針的理解很模糊, 或者感受很難理解, 其實咱們和生活聯繫起來, 這一切都會變得清晰透徹.數組

 

        咱們用理解一維數組的思想來理解二維數組, 對於一維數組,每一個箱子裏存放的是具體的蘋果, 二維數組,就是把一維數組中的內容中又存放了一系列的箱子, 這樣就構成了二維數組.spa

        這就像一輛火車, 火車有不少節火車箱, 每一個火車箱裏面有一趟座位, 那咱們火車箱的編號和每一個火車座位的編號就不一樣了.  例如int  a[3][4] ; 3節火車箱, 每一個火車箱中有四個挨着的座位.  實際的座位的編號和咱們的火車箱的編號這是咱們要區分開的,  咱們的火車箱編號就是a[0],a[1],a[2](從座位的角度上來看)指針

         從外面看, 咱們每節火車箱的地址, a+0,a+1,a+2, a就至關於一個行地址, 火車箱爲單位的地址, a+1是跳到下一個車箱的首地址,  而a[0]就至關因而座位的首地址, a[0]+0就會跳到第0節車箱的第0個座位, a[0]+1就會跳到第0節車箱的第1一個座位. for循環

 

        指針數組指向二維地址(座位的地址,實際地址):變量

        創建一個指針數組來引用二維數組中的元素:int *p[3], a[3][2],i,j; 從各類能夠看到p是一個數組名, 在定義時系統給他開闢3個連續的存儲單元; 在這個前面加上*號表示, 數組的基本類型爲int的指針類型. 咱們能夠經過for循環讓這個數組裏面的指針指向每排"座位"的首地址:
循環

        這個數組能夠理解爲是"座位"地址類型數組. 引用

 

 

        而下面咱們定義的這個數組: int a[3][2], (*prt)[2] 爲行指針數組(火車車箱數組). 這樣咱們能夠把每節"車箱的地址"放入到咱們的行指針數組變量中了.im

 

        這樣咱們能夠把a這個行地址常量賦值給行地址變量 p=a. p+1等價於a+1,等價於a[1] 當p指向數組的首地址時, 能夠經過如下形式來引用p[i][j]:二維數組

               (1) *(p[i]+j)img

               (2)*(*(p+i) +j ))

               (3)(*(p+i))[j]

               (4)p[i][j]

        p是一個行指針變量, 而二維數組名a是一個行地址變量.

 

以上就是對二維數組和指針的理解.

相關文章
相關標籤/搜索