在記憶體中二維陣列是按照行主序進行儲存的,從記憶體的角度上看,二維陣列本質就是乙個一維陣列。如果把二維陣列的每一行看成乙個整體,即看成乙個陣列中的乙個元素,那麼整個二維陣列就是乙個一維陣列。而二維陣列的名字代表二維陣列第0行的首位址(注意它是代表一行元素的首位址,而不是第0行第0列元素的首位址,雖然是相等的,但不能這麼理解,所以在沒有強制轉換的情況下,二維資料要麼通過行指標進行引數傳遞,要麼通過二維指標進行引數傳遞
/*傳二維陣列*/
//第1種方式:傳陣列,第二維必須標明
/*void display(int arr[4])*/
void display1(int arr[4],const
int irows)
cout
/*void display(int (*parr)[4])*/
void display2(int (*parr)[4],const
int irows)
cout
//第3.1種方式:
void display3(int *arr,const
int irows,const
int icols)
cout
//第3.2種方式:使用二維指標傳值
void display3(int **arr, int rows, int cols)
{ for (int i=0;ifor(int j=0;jcout
<< *((int*)arr + cols*i + j) **:
二維陣列作為形參
以下是網上摘抄的一段 首先,我引用了譚浩強先生編著的 c程式設計 上面的一節原文,它簡要介紹了如何將二維陣列作為引數傳遞,原文如下 略有改變,請原諒 原文開始 可以用二維陣列名作為實參或者形參,在被呼叫函式中對形引數組定義時可以指定所有維數的大小,也可以省略第一維的大 明,如 void func i...
二維陣列作為形參的傳遞
include include includeusing namespace std void func1 int arr 5 傳遞陣列,需生命陣列第二維的大小 int test int a 3 error cannot convert int 3 to int for argument 1 to ...
C語言 二維陣列 形參傳值寫法
為什麼 寫成map max max 或者map max 就可以 而寫成map max 或者map就不行?編譯器實際處理多維陣列是把一維陣列分段處理的,也就是說實際上並不存在多維陣列,多維陣列僅僅是個邏輯概念,所以行下標改變時,編譯器必須知道有多少列,以計算偏移位址 如果是map max 的話,假設目...