C 多維陣列傳參

2021-07-22 02:08:54 字數 621 閱讀 9324

void func(int array[3][10])

void func(int array[10])

兩種寫法都是合法的,不能把第二維或者更高維的大小省略,如:

void func(int array)

void func(int array[3])

這是由編譯器的原理限制的,對於陣列int array[m][n],如果要取p[i][j]的值,編譯器的定址方式:

p+i*n+j;

這樣可以看出來,如果省略了二維或者高維陣列,編譯器將不能正確的定址。

實參陣列維數可以大於形引數組,如

int array[5][10]

void func(int array[3][10])

這時形引數組只取實參陣列的一部分,其餘部分不起作用。

方法1中,陣列的維數必須是固定的,而有時,我們需要用到各個維數不固定的二維陣列做引數。

這時使用指標傳參,另外加上兩個引數指明各個維數,然後手工定址。

例如:

void func(int **array,int m,int n)

需要把array[i][j]這樣的式子變為((int )array +n*i+j)

參考部落格:

指標陣列陣列傳參 指標引用傳參

指標和陣列作為引數傳入函式時,傳入的是位址,即指向變數的位址和陣列的首位址,可以在函式中改變指標或陣列的值,但本質上它們還是值的傳遞 區別於變數的值傳遞的是 變數值傳遞不會改變實參原來的值。我們無法對指標和陣列的位址進行操作 如 位址賦值,分配記憶體等 要進行位址操作需要使用指標引用或指標的指標。示...

傳陣列 Axios陣列傳參問題

在開發過程中遇到乙個前端通過axios向後端api請求,引數傳遞格式不正確導致的請求失敗的問題,在此記錄一下。後端是乙個查詢介面,查詢引數中有幾個是陣列的形式 傳送請求時應該以params是通過url方式傳遞 預期格式pageno 1 pagesize 15 sn 123 sn 456 mo num...

C C 陣列傳參

託管c 可以將陣列作為輸入 輸出引數。clr封裝c 託管介面時,可以使用cli array 作為輸入引數,而且c 可以獲取到c 修改後的陣列內容。array陣列原型 qualifiers cli array qualifiers type dimension var 我們只關注下模板引數 type ...