C語言之對多維陣列的簡易理解

2021-08-13 17:06:27 字數 1613 閱讀 1606

在平常學習的過程中,必定會經常跟陣列打交道並且也經常使用陣列,不管是一維陣列也好還是多維陣列也罷,陣列可以說是時常出現。相比較而言,對一維陣列來說,理解以及使用都是輕車熟路。但是相比一維陣列,多維陣列的使用以及理解卻有些偏差。在此,我對多維陣列進行了簡易的理解。

首先以一維陣列為例。要畫出乙個一維陣列,想必非常簡單。

上圖便是一維陣列的儲存情況。

但是,當一維陣列公升級成二維陣列時呢?我們平常所看的書本等,在畫二維陣列時,將二維陣列列表化。這樣可以讓讀者簡潔明瞭的理解二維陣列。如下圖。

但是,如果讓畫三維陣列呢?在這個平面無法展現乙個立體的情況,並且如果繼續公升維,四維五維等等。這就引起了我的思考。

我們都知道,陣列在記憶體中的儲存,都是線性的。所以無論是幾位陣列,我們都應該將其理解為線性,也就是一條線排列。那將如何展示呢?

如下圖;我們定義乙個二維陣列 arr [4][4] 將陣列一維化,分步解決,先理解arr [4][4] 其實是乙個一維陣列,裡面儲存了四個元素,而每個陣列元素又是乙個新的陣列。

當我們展示完這個一維陣列的元素後,我們再將這個陣列的元素展開,也就是這個陣列,如下圖;

這樣想的話,其實這個二維陣列可以理解成,乙個一維陣列,裡面儲存了四個一維陣列。而這四個陣列相當於之前那個一維陣列的元素。

進而可以類推,不管是幾位陣列,我們都可以認為是一維陣列,這個一維陣列裡面儲存著接下來的一維陣列,一層一層推到最後,也就推出來了這個陣列最終的元素。這樣便與陣列的線性儲存一致了。

接下來,我們研究乙個新的問題,就是陣列傳參問題。

大家都知道,一維陣列傳參時,需要降維,需要形參接收,這裡形參接收的都是指標。這裡的指標,便是陣列元素型別的指標。

int arr[4] =
這裡如果接收這個陣列,那麼接收的便是乙個整形型別的指標,因為陣列內部儲存的是乙個整型型別。
int

arr[4]

[4]

如果是乙個二維陣列呢?此時降維成什麼?

根據上文所講,如果將這個二維陣列理解成乙個一維陣列裡面儲存著四個一維陣列的話,那麼降維傳參後的指標型別必定是乙個陣列指標型別。結果正確嗎?我們驗證一下。

顯而易見,是正確的。

對多維陣列的理解

1.我們知道陣列名就是指標常量。下面我們來介紹陣列名的作用和用法 a.int a 3 這是乙個一維陣列 這是乙個二維陣列 a i j 表示第i 1個一維陣列的第j 1個元素的值。a 0 0 1 c.int a 3 2 2 這是乙個三維陣列a a i j k 表示第i 1個二維陣列的第j 1個一維陣列...

c語言之指標陣列理解一

直接給出demo和記憶體圖進行分析 列印指標陣列 這裡為什麼要定義為二級指標 首先,陣列本身就是乙個一級指標,在加上定義的是指標陣列,也就是儲存的資料是指標,所以是二級指標 void printarrydata char arry,int cnt 對指標陣列進行排序 void sortarrydat...

C語言之陣列

c語言之陣列 一,一維陣列 1,一維陣列的定義 型別符 陣列名 常量表示式 注 1 常量表示式中可以包括常量和符號常量.int a 3 5 是合法的,int a n 是不合法的,c語言不允許對陣列的大小作動態定義 2 如果在被呼叫的函式 不包括主函式 中定義陣列,起長度可以是變數或非常量表示式,可稱...