專題 二維陣列作為函式引數傳遞

2021-05-23 03:17:51 字數 1173 閱讀 6286

#include

/*********************************

* 方法1: 第一維的長度可以不指定 *

*       但必須指定第二維的長度 *                            

*********************************/

void print_a(int a[5], int n, int m)     }

/*****************************************

*方法2: 指向乙個有5個元素一維陣列的指標 *

*****************************************/

void print_b(int (*a)[5], int n, int m)        

}/***********************************

*方法3: 利用陣列是順序儲存的特性, *

*       通過降維來訪問原陣列!*

***********************************/

void print_c(int *a, int n, int m)                           }

int main(void)

, , , };

printf("/n方法1:/n");  

print_a(a, 4, 5);

printf("/n方法2:/n");  

print_b(a, 4, 5);  

printf("/n方法3:/n");  

print_c(&a[0][0], 4, 5);

getchar();

return 0;

}~~~~~~~~~~~~~~~~~

這裡需要特別注意幾點:

宣告二維陣列int a[4][5].

1、第二種方法中,使用的是指向一維陣列的指標作為引數,形式為int (*a)[5].

這裡a指向的位址和int a[4][5]中的a指向的位址值都是相同的。

2、在第三種方法中,傳遞的是二維陣列的首元素的位址,所以函式的引數只是乙個int型的指標,但是表示某個元素的形式為:*(a+i*m+j) == a[i][j] ,這裡m是列號,不是行號!!

二維陣列作為引數傳遞

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...

二維陣列作為引數傳遞

l二維陣列題的思維收穫 這個演算法跟資料結構沒關係,主要是邏輯思維看圖思考利用的是資料之間的關係 多多舉例具體化嘗試,把複雜的問題具體化,分析那種情況,時間複雜度低。先有思路,再寫 貼近自己的思維。l二維陣列處理的 收穫 在c 中將二維陣列當作引數的時候,必須指明所有維數大小或者省略第一維。但是我們...

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

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