二維陣列作為函式引數傳遞(C )

2021-07-23 23:10:20 字數 1057 閱讀 7536

有時候我們也許會不明白為什麼c++中的陣列宣告的時候下標是需要乙個常數,而不能是乙個變數吶?也許stl模板庫中的向量可以解決變數作為下標的陣列宣告方式,為了節約一些記憶體或者是提高一些效能,也為了功能不重複,故而陣列中的下標採取了常量的方式。

int a[5]; //可行的

const

int max=10;

int b[max]; //可行的

intmax=5;

int c[max]; //不可行

二維陣列的宣告也是類似的,但是當我們將陣列作為函式引數進行傳遞的時候,一維陣列的傳遞和二維陣列的傳遞是不同的。

①. 一維陣列:可以不說明陣列大小,但在其內部無法獲取傳入的陣列的大小,陣列傳入函式的時候已經退化為乙個指標。

②. 二維陣列:可以不說明陣列行的下標,但是必須說明陣列的列的下標。

實際情況卻是有些時候我們需要二維陣列,但是又不知道它的行數或者列數的情況下,我們可以採用下列的方法來建立乙個二維陣列。

①.知道列數利用動態分配建立乙個行數為變數的二維陣列

int (*p)[5];  //p為二維陣列變數名,5是指向的二維陣列的列數

p=new int[n][5]; //n可以是乙個變數

②.不知道行數和列數可以利用乙個函式建立乙個二維陣列。由於該函式傳入引數為二級指標的引用,不了解二級指標引用的話可以參考寫的關於指標引用的文章。

二級指標和指標引用函式傳參(c++)

void make_two_array(int **&p,int row,int col)

}

建立的二維陣列結構圖示如下:

這樣的乙個二維陣列刪除函式如下:

void delete_two_array(int **&p,int row)

二維陣列作為函式引數傳遞(C )

有時候我們也許會不明白為什麼c 中的陣列宣告的時候下標是需要乙個常數,而不能是乙個變數吶?也許stl模板庫中的向量可以解決變數作為下標的陣列宣告方式,為了節約一些記憶體或者是提高一些效能,也為了功能不重複,故而陣列中的下標採取了常量的方式。int a 5 可行的 const int max 10 i...

C語言二維陣列作為函式引數傳遞

二維陣列中元素排列的順序是按行存放的,即在記憶體中先順序存放第一行的元素,再存放第二行的元素.二維陣列作為函式引數,實參可以直接使用二維陣列名,在被呼叫函式中對形引數組定義可以指定所有維數的大小,也可以省略第一維的大 明,如 void f int a 3 4 void f int a 4 它們是合法...

二維陣列作為引數傳遞

void getoffdata float offdata,int col void main 報錯d qt projects rssi position main.cpp 17 error cannot convert float 16 to float for argument 1 to voi...