【C 語言入門】189.在函式間傳遞任意長寬的二維陣列

在函式間傳遞二維陣列

我們在之前的文章提過,在函式間傳遞一維陣列的方法,有以下兩個方法。

  1. 直接傳遞陣列的指標
  2. 隱性轉型後傳遞第一個元素的指標和陣列長度

第一個方法直接傳遞陣列的指標,他就會記得這整個陣列的開頭位址。

第二個方法,我們把陣列隱性轉型成一個位址。

第一種方法是存陣列的位址;第二種方法是存陣列中第一個元素的位址。

它們看上去很類似,但是如果使用第一種方法,陣列的大小是已知的,我沒辦法更改。

第二個方法使用上比較彈性。

在函式間傳遞二維陣列

在函式間傳遞二維陣列和在函式間傳遞一維陣列類似,

同樣有兩種方法。

  1. 直接傳遞陣列的指標
  2. 隱性轉型後傳遞第一個元素的指標和陣列長度

同樣地,如果我們直接傳遞陣列的指標,那陣列的大小不能更改。

使用第二個版本會更有彈性,可以在第一個維度有任意多個大小,但是我們在第二個維度上會有限制。

不過如果不寫死的話,也代表真理的不一定是大小其實也不一定是我們要的大小,大小是動態決定的。

在 C 語言裡,我們沒有真正的二維陣列,我們只有陣列的陣列。

你可以把它想像成記憶體是一維的。

因為我們把陣列隱性轉型成指標的時候,如果每個陣列的長度都不確定的話,決會不知道怎麼去存取。

因此在型別上,要麼就是第一種方法,也就是寫死,要麼就是甚麼都是未知的(第二種方法)。

Leave a Comment

Your email address will not be published. Required fields are marked *