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