C 多維陣列作為函式引數該怎麼寫?

2021-07-27 14:19:16 字數 1156 閱讀 7889

眾所周知,函式引數中一維陣列的長度會被忽略的,但二維陣列的第二維度就會被要求指定長度(否則gcc會報告「陣列元素的型別不完全」)。這很好理解,它是為了讓函式知道矩陣的寬度。同理,三維陣列就會被要求指定第二維度和第三維度的長度,所以n維陣列只有第一維度的長度會被忽略。那麼對於c++而言,如何將多維陣列作為引數向函式中進行傳遞呢?本文就為大家總結一下c++多維陣列作為函式引數的幾種方式。

函式原型:正確例(有不妥,非錯誤)

直接傳遞元素個數也不妥當,只能處理固定元素個數的陣列,應用場合十分受限

void printtwodimensinalarray( int a[8][8], unsigned int m, unsigned int n );

函式原型:錯誤例

不能每維都不傳遞元素個數,語法規則不允許

void printtwodimensinalarray( int a, unsigned int m, unsigned int n );

函式原型:正確例(有不妥,非錯誤)

a 為指向陣列基位址的整數指標,m 為第一維元素個數,n 為第二維元素個數,函式內部使用指標運算訪問某個元素

void printtwodimensinalarray( int * a, unsigned int m, unsigned int n );
如:第 i 行 j 列元素,使用指標運算 a + n * i + j 的結果指標指向 《最後這種方式需要考慮乙個問題,表示二維陣列中的元素已經非常苦難,那麼三維、四維...呢?>

不過目前而言,第一種和第三種是正確的,雖然有不妥當,但是卻是程式設計時實現的選擇方式。

//  函式定義

void printtwodimensinalarray(int * a, unsigned int m, unsigned int n)

// 函式呼叫

int a[2][3] = , };

printtwodimensinalarray( a, 2, 3 );

作為函式引數的多維陣列

c語言的陣列值得注意的地方有兩點 1 c語言中只有一維陣列,而且陣列的大小必須在編譯期就作為常數確定下來。然而,c語言中的陣列的元素可以是任何型別的物件,當然也可以是另外乙個陣列。這樣,要 出乙個多維陣列就不是一件難事。2 對於乙個陣列,我們只能夠做兩件事 確定該陣列的大小,以及獲得指向該陣列下標為...

強化C陣列作為函式引數 多維陣列的本質

include include include 多維陣列的本質就是乙個指標陣列,由於多維陣列高於3級的基本上沒有多大的意義 如果非要做3級以上的話,就是對二級的資料進行修改 int printf array01 char array 30 int len return 0 void printf03...

C語言陣列作為函式引數

一 陣列元素作為函式的實參 陣列元素就是變數,與普通變數沒有區別,將陣列元素傳送給形參,實現單向的值傳遞。include float max float x,float y int main int m a 0 for int i 1 i 6 i printf 陣列中的最大元素是 d m 二 陣列名...