[C++程序設計]用數組名作函數參數


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]; //第一維大小省略


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM