C語言 二維陣列 形參傳值寫法

2021-06-16 08:52:26 字數 528 閱讀 7117

為什麼 寫成map[max][max]或者map[max]就可以  而寫成map[max] 或者map就不行?

編譯器實際處理多維陣列是把一維陣列分段處理的,也就是說實際上並不存在多維陣列,多維陣列僅僅是個邏輯概念,所以行下標改變時,編譯器必須知道有多少列,以計算偏移位址

如果是map[max]的話,

假設目前座標為map[i][x], 要移動到下一行相同列就是map[i+1][x],而引數沒有提供列長度,編譯器不知道這個+1到底要偏移多少個單位

追問那一維陣列呢  比如 我在main 函式中已經知道map具體的長度 map[max]

那麼 我在傳值的時候  形參是  int findway(int map)  裡面是這麼寫麼?

回答一維陣列根據元素型別就可以判斷要偏移的長度,所以當函式的形參可以不提供長度

比如有int a[100];  那麼a[i+2]相對於 a[i] 的偏移量就是2個int的長度,所以函式形參可以用不帶長度的陣列或者直接就是個指標:

f(int a); f(int * i)

C 二維陣列傳參

今天寫程式的時候要用到二維陣列作引數傳給乙個函式,我發現將二維陣列作引數進行傳遞還不是想象得那麼簡單裡,但是最後我也解決了遇到的問題,所以這篇文章主要介紹如何處理二維陣列當作引數傳遞的情況,希望大家不至於再在這上面浪費時間。正文 首先,我引用了譚浩強先生編著的 c程式設計 上面的一節原文,它簡要介紹...

二維陣列作為形參

以下是網上摘抄的一段 首先,我引用了譚浩強先生編著的 c程式設計 上面的一節原文,它簡要介紹了如何將二維陣列作為引數傳遞,原文如下 略有改變,請原諒 原文開始 可以用二維陣列名作為實參或者形參,在被呼叫函式中對形引數組定義時可以指定所有維數的大小,也可以省略第一維的大 明,如 void func i...

二維陣列做形參

來看 c primer 中給出的方法 cpp view plain copy void func1 intiarray 10 intmain 編譯通過,注意形參宣告一定要給出第二個維度的大小,要不編譯不過。cpp view plain copy void func2 int parray 10 vo...