C++數組的概念
概括地說:數組是有序數據的集合。要尋找一個數組中的某一個元素必須給出兩個要素,即數組名和下標。數組名和下標惟一地標識一個數組中的一個元素。
數組是有類型屬性的。同一數組中的每一個元素都必須屬于同一數據類型。一個數組在內存中占一片連續的存儲單元。如果有一個整型數組a,假設數組的起始地址為2000,則該數組在內存中的存儲情況如圖所示。

引入數組就不需要在程序中定義大量的變量,大大減少程序中變量的數量,使程序精煉,而且數組含義清楚,使用方便,明確地反映了數據間的聯系。許多好的算法都與數組有關。熟練地利用數組,可以大大地提高編程和解題的效率,加強了程序的可讀性。
C++用方括號來表示下標,如用s[1],s[2],s[3] 分別代表s1,s2,s3。
C++用數組名作函數參數
常量和變量可以用作函數實參,同樣數組元素也可以作函數實參,其用法與變量相同。數組名也可以作實參和形參,傳遞的是數組的起始地址。
用數組元素作函數實參
由于實參可以是表達式,而數組元素可以是表達式的組成部分,因此數組元素當然可以作為函數的實參,與用變量作實參一樣,將數組元素的值傳送給形參變量。
【例】用函數處理。
今設一函數max_value,用來進行比較并返回結果。可編寫程序如下:
#include <iostream>using namespace std;int main( ){ int max_value(int x,int max); //函數聲明 int i,j,row=0,colum=0,max int a[3][4]={{5,12,23,56},{19,28,37,46},{-12,-34,6,8}}; //數組初始化 max=a[0][0]; for (i=0;i<=2;i++) for (j=0;j<=3;j++) { max=max_value(a[i][j],max); //調用max_value函數 if(max==a[i][j])//如果函數返回的是a[i][j]的值 { row=i; //記下該元素行號i colum=j; //記下該元素列號j } } cout<<"max="<<max<<",row="<<row<<",colum="<<colum<<endl;}int max_value(int x,int max)//定義max_value函數{ if(x>max) return x;//如果x>max,函數返回值為x else return max;//如果x≤max,函數返回值為max}用數組名作函數參數
可以用數組名作函數參數,此時實參與形參都用數組名(也可以用指針變量,見第6章)。
【例】用選擇法對數組中10個整數按由小到大排序。
所謂選擇法就是先將10個數中最小的數與a[0]對換,再將a[1]到a[9]中最小的數與a[1]對換……每比較一輪,找出一個未經排序的數中最小的一個。共比較9輪。根據此思路編寫程序如下:
#include <iostream>using namespace std;int main( ){ void select_sort(int array[],int n); //函數聲明 int a[10],i; cout<<"enter the originl array:"<<endl; for(i=0;i<10;i++) //輸入10個數 cin>>a[i]; cout<<endl; select_sort(a,10);//函數調用,數組名作實參 cout<<"the sorted array:"<<endl; for(i=0;i<10;i++) //輸出10個已排好序的數 cout<<a[i]<<" "; cout<<endl; return 0;}void select_sort(int array[],int n) //形參array是數組名{ int i,j,k,t; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) if(array[j]<array[k]) k=j; t=array[k];array[k]=array[i];array[i]=t; }}運行情況如下: