1. 用數組元素作函數實參
1 #include <iostream> 2 using namespace std; 3 4 int max_value(int x, int max) 5 { 6 return max > x ? max : x; 7 } 8 9 int main() 10 { 11 const int x = 3, y = 4; 12 int a[x][y]={{34,62,34,101},{45,67,3,0},{11,45,97,100}}; 13 int max = a[0][0], i, j, ix, iy; 14 15 for(i = 0; i < x; i ++) 16 { 17 for(j = 0; j < y; j++) 18 { 19 max = max_value(a[i][j],max); 20 if(max == a[i][j]) 21 { 22 ix = i; 23 iy = j; 24 } 25 } 26 } 27 cout << "a[" << ix << "][" << iy << "]=" << max << endl; 28 }
2. 用數組名作函數參數
關於用數組名作函數參數有兩點要說明:
(1) 如果函數實參是數組名,形參也應為數組名(或指針變量,關於指針見第5章),形參不能聲明為普通變量(如int array;)。實參數組與形參數組類型應一致(現都為int型),如不一致,結果將出錯。
(2) 需要特別說明的是: 數組名代表數組首元素的地址,並不代表數組中的全部元素。因此用數組名作函數實參時,不是把實參數組的值傳遞給形參,而只是將實參數組首元素的地址傳遞給形參。形參可以是數組名,也可以是指針變量,它們用來接收實參傳來的地址。如果形參是數組名,它代表的是形參數組首元素的地址。在調用函數時,將實參數組首元素的地址傳遞給形參數組名。這樣,實參數組和形參數組就共占同一段內存單元
聲明形參數組並不意味着真正建立一個包含若干元素的數組,在調用函數時也不對它分配存儲單元,只是用array[]這樣的形式表示array是一維數組名,以接收實參傳來的地址。因此array
[]中方括號內的數值並無實際作用,編譯系統對一維數組方括號內的內容不予處理。形參一維數組的聲明中可以寫元素個數,也可以不寫。
C++實際上只把形參數組名作為一個指針變量來處理,用來接收從 實參傳過來的地址
1 #include <iostream> 2 #include <iomanip> 3 using namespace std; 4 5 void select_sort(int a[],const int n) 6 { 7 int i, j, k; 8 for(i = 0; i < n; i++) 9 { 10 for(j = i + 1; j < n; j++) 11 { 12 if(a[i] > a[j]) 13 { 14 k = a[j]; 15 a[j] = a[i]; 16 a[i] = k; 17 } 18 } 19 } 20 } 21 22 int main() 23 { 24 const int n = 10; 25 int a[n] = {2,45,67,13,8,5,1,200,50,23}; 26 int i; 27 28 select_sort(a, n); 29 30 for(i = 0; i < n; i++) 31 { 32 cout << setw(5) << a[i]; 33 } 34 cout << endl; 35 return 0; 36 }
3. 用多維數組名作函數參數
如果用二維數組名作為實參和形參,在對形參數組聲明時,必須指定第二維(即列)的大小,且應與實 參的第二維的大小相同。第一維的大小可以指定,
也可以不指定。如
int array[3][10]; //形參數組的兩個維都指定或
int array[][10]; //第一維大小省略