亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

詳解C++編程中用數組名作函數參數的方法

2020-05-23 14:14:48
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了詳解C++編程中用數組名作函數參數的方法,是C++入門學習中的基礎知識,需要的朋友可以參考下

C++數組的概念

概括地說:數組是有序數據的集合。要尋找一個數組中的某一個元素必須給出兩個要素,即數組名和下標。數組名和下標惟一地標識一個數組中的一個元素。

數組是有類型屬性的。同一數組中的每一個元素都必須屬于同一數據類型。一個數組在內存中占一片連續的存儲單元。如果有一個整型數組a,假設數組的起始地址為2000,則該數組在內存中的存儲情況如圖所示。

詳解C++編程中用數組名作函數參數的方法

引入數組就不需要在程序中定義大量的變量,大大減少程序中變量的數量,使程序精煉,而且數組含義清楚,使用方便,明確地反映了數據間的聯系。許多好的算法都與數組有關。熟練地利用數組,可以大大地提高編程和解題的效率,加強了程序的可讀性。

C++用方括號來表示下標,如用s[1],s[2],s[3] 分別代表s1,s2,s3。

C++用數組名作函數參數

常量和變量可以用作函數實參,同樣數組元素也可以作函數實參,其用法與變量相同。數組名也可以作實參和形參,傳遞的是數組的起始地址。

用數組元素作函數實參

由于實參可以是表達式,而數組元素可以是表達式的組成部分,因此數組元素當然可以作為函數的實參,與用變量作實參一樣,將數組元素的值傳送給形參變量。

【例】用函數處理。

今設一函數max_value,用來進行比較并返回結果。可編寫程序如下:

 

 
  1. #include <iostream> 
  2. using namespace std; 
  3. int main( ) 
  4. int max_value(int x,int max); //函數聲明 
  5. int i,j,row=0,colum=0,max 
  6. int a[3][4]={{5,12,23,56},{19,28,37,46},{-12,-34,6,8}}; //數組初始化 
  7. max=a[0][0]; 
  8. for (i=0;i<=2;i++) 
  9. for (j=0;j<=3;j++) 
  10. max=max_value(a[i][j],max); //調用max_value函數 
  11. if(max==a[i][j])//如果函數返回的是a[i][j]的值 
  12. row=i; //記下該元素行號i 
  13. colum=j; //記下該元素列號j 
  14. cout<<"max="<<max<<",row="<<row<<",colum="<<colum<<endl; 
  15. int max_value(int x,int max)//定義max_value函數 
  16. if(x>max) return x;//如果x>max,函數返回值為x 
  17. else return max;//如果x≤max,函數返回值為max 

用數組名作函數參數

可以用數組名作函數參數,此時實參與形參都用數組名(也可以用指針變量,見第6章)。

【例】用選擇法對數組中10個整數按由小到大排序。

所謂選擇法就是先將10個數中最小的數與a[0]對換,再將a[1]到a[9]中最小的數與a[1]對換……每比較一輪,找出一個未經排序的數中最小的一個。共比較9輪。根據此思路編寫程序如下:

 

 
  1. #include <iostream> 
  2. using namespace std; 
  3. int main( ) 
  4. void select_sort(int array[],int n); //函數聲明 
  5. int a[10],i; 
  6. cout<<"enter the originl array:"<<endl; 
  7. for(i=0;i<10;i++) //輸入10個數 
  8. cin>>a[i]; 
  9. cout<<endl; 
  10. select_sort(a,10);//函數調用,數組名作實參 
  11. cout<<"the sorted array:"<<endl; 
  12. for(i=0;i<10;i++) //輸出10個已排好序的數 
  13. cout<<a[i]<<" "
  14. cout<<endl; 
  15. return 0; 
  16. void select_sort(int array[],int n) //形參array是數組名 
  17. int i,j,k,t; 
  18. for(i=0;i<n-1;i++) 
  19. k=i; 
  20. for(j=i+1;j<n;j++) 
  21. if(array[j]<array[k]) k=j; 
  22. t=array[k];array[k]=array[i];array[i]=t; 

運行情況如下:

 

 
  1. enter the originl array: 
  2. 6 9 -2 56 87 11 -54 3 0 77↙ //輸入10個數 
  3. the sorted array: 
  4. -54 -2 0 3 6 9 11 56 77 87 

關于用數組名作函數參數有兩點要說明:

1) 如果函數實參是數組名,形參也應為數組名(或指針變量),形參不能聲明為普通變量(如int array;)。實參數組與形參數組類型應一致(現都為int型),如不一致,結果將出錯。

2) 需要特別說明的是: 數組名代表數組首元素的地址,并不代表數組中的全部元素。因此用數組名作函數實參時,不是把實參數組的值傳遞給形參,而只是將實參數組首元素的地址傳遞給形參。

形參可以是數組名,也可以是指針變量,它們用來接收實參傳來的地址。如果形參是數組名,它代表的是形參數組首元素的地址。在調用函數時,將實參數組首元素的地址傳遞給形參數組名。這樣,實參數組和形參數組就共占同一段內存單元。見圖。

詳解C++編程中用數組名作函數參數的方法

在用變量作函數參數時,只能將實參變量的值傳給形參變量,在調用函數過程中如果改變了形參的值,對實參沒有影響,即實參的值不因形參的值改變而改變。而用數組名作函數實參時,改變形參數組元素的值將同時改變實參數組元素的值。在程序設計中往往有意識地利用這一特點改變實參數組元素的值。

實際上,聲明形參數組并不意味著真正建立一個包含若干元素的數組,在調用函數時也不對它分配存儲單元,只是用array[]這樣的形式表示array是一維數組名,以接收實參傳來的地址。因此array[]中方括號內的數值并無實際作用,編譯系統對一維數組方括號內的內容不予處理。形參一維數組的聲明中可以寫元素個數,也可以不寫。

函數首部的下面幾種寫法都合法,作用相同:

 

 
  1. void select_sort(int array[10],int n) //指定元素個數與實參數組相同 
  2. void select_sort(int array[],int n) //不指定元素個數 
  3. void select_sort(int array[5],int n) //指定元素個數與實參數組不同 

C++實際上只把形參數組名作為一個指針變量來處理,用來接收從實參傳過來的地址。前面提到的一些現象都是由此而產生的。

用多維數組名作函數參數

如果用二維數組名作為實參和形參,在對形參數組聲明時,必須指定第二維(即列)的大小,且應與實參的第二維的大小相同。第一維的大小可以指定,也可以不指定。如:

 

 
  1. int array[3][10]; //形參數組的兩個維都指定 

 

 
  1. int array[][10]; //第一維大小省略 

二者都合法而且等價。但是不能把第二維的大小省略。下面的形參數組寫法不合法:

 

 
  1. int array[][]; //不能確定數組的每一行有多少列元素 
  2. int array[3][]; //不指定列數就無法確定數組的結構 

在第二維大小相同的前提下,形參數組的第一維可以與實參數組不同。例如,實參數組定義為:

int score[5][10];

而形參數組可以聲明為:

 

 
  1. int array[3][10]; //列數與實參數組相同,行數不同 
  2. int array[8][10]; 

這時形參二維數組與實參二維數組都是由相同類型和大小的一維數組組成的,實參數組名score代表其首元素(即第一行)的起始地址,系統不檢查第一維的大小。

如果是三維或更多維的數組,處理方法是類似的。

【例】有一個3×4的矩陣,求矩陣中所有元素中的最大值。要求用函數處理。

解此題的程序如下:

 

 
  1. #include <iostream> 
  2. using namespace std; 
  3. int main( ) 
  4. int max_value(int array[][4]); 
  5. int a[3][4]={{11,32,45,67},{22,44,66,88},{15,72,43,37}}; 
  6. cout<<"max value is "<<max_value(a)<<endl; 
  7. return 0; 
  8. int max_value(int array[][4]) 
  9. int i,j,max; 
  10. max=array[0][0]; 
  11. for( i=0;i<3;i++) 
  12. for(j=0;j<4;j++) 
  13. if(array[i][j]>max) max=array[i][j]; 
  14. return max; 

運行結果如下:

 

 
  1. max value is 88 

讀者可以將max_value函數的首部改為以下幾種情況,觀察編譯情況:

 

 
  1. int max_value(int array[][]) 
  2. int max_value(int array[3][]) 
  3. int max_value(int array[3][4]) 
  4. int max_value(int array[10][10]) 
  5. int max_value(int array[12]) 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品第3页| 亚洲欧洲成视频免费观看| 国产一区二区三区在线免费观看| 欧美日韩精品在线视频| 亚洲一区二区久久久久久| 亚洲japanese制服美女| 黑人巨大精品欧美一区二区三区| 国产精品稀缺呦系列在线| 91国内在线视频| 在线精品视频视频中文字幕| 日韩欧美在线视频日韩欧美在线视频| 日韩在线国产精品| 亚洲天堂成人在线视频| 欧洲日韩成人av| 欧美精品情趣视频| 国产一区二区三区视频免费| 久久精品一偷一偷国产| 亚洲精品xxxx| 欧美激情a∨在线视频播放| 成人免费在线网址| 97精品视频在线播放| 国产精品久久久久久久久久久新郎| 精品久久久久久国产| 欧美激情乱人伦一区| 2019国产精品自在线拍国产不卡| 福利精品视频在线| www.久久久久| 欧美国产在线视频| 69av在线播放| 久久九九全国免费精品观看| 日韩在线播放视频| 色婷婷综合久久久久| 亚洲成色999久久网站| 久久综合伊人77777| 日本精品中文字幕| 久久久久久久一| 国产日韩欧美日韩大片| 久久精品国产一区| 亚洲美腿欧美激情另类| 国产欧美在线看| 欧美电影免费观看高清完整| 欧美亚洲视频一区二区| 国产日韩在线观看av| 久久成人人人人精品欧| 久久久亚洲福利精品午夜| 97在线观看免费| 日韩精品在线观看视频| 国产精品入口尤物| 久久亚洲电影天堂| 午夜精品国产精品大乳美女| 久久久久久有精品国产| 川上优av一区二区线观看| 国产精品亚洲片夜色在线| 国产精品白嫩初高中害羞小美女| 欧美视频免费在线观看| 欧美日本在线视频中文字字幕| 国产综合在线观看视频| 国外成人在线视频| 4388成人网| 精品国产成人在线| 国产精品直播网红| 在线日韩欧美视频| 97香蕉超级碰碰久久免费的优势| 日韩在线中文字| 国产亚洲人成a一在线v站| 欧美亚洲视频在线看网址| 欧美自拍视频在线观看| 亚洲精品自拍偷拍| 欧美成人中文字幕在线| 欧美大学生性色视频| 久久久久久亚洲精品| 国产一区深夜福利| 成人女保姆的销魂服务| 日韩精品亚洲元码| 国产精品午夜国产小视频| 91在线免费网站| 日韩欧美大尺度| 国产精品www网站| 久久亚洲精品中文字幕冲田杏梨| 国产午夜精品理论片a级探花| 国产亚洲精品美女久久久久| 亚洲精品国产欧美| 日韩av免费网站| 亚洲二区中文字幕| 日本精品久久电影| 欧美在线视频播放| 国内精品久久影院| 97在线视频免费看| 97国产精品视频| 久久全国免费视频| 亚洲欧美色婷婷| 97在线精品视频| 日韩av免费看网站| 91av在线播放| 国产成人综合av| 日韩在线视频观看正片免费网站| 91热福利电影| 久久综合五月天| 奇米成人av国产一区二区三区| 国产亚洲精品成人av久久ww| 午夜精品一区二区三区在线视| 国内精品400部情侣激情| 欧美黄色性视频| 青青草一区二区| 国产成人aa精品一区在线播放| 中文字幕免费精品一区高清| 91精品久久久久久久久不口人| 亚洲欧美精品一区| 国产欧美在线视频| 国产精品成人免费电影| 国产精品中文字幕在线观看| 久久久久久有精品国产| 国产精品久久久久久久久免费看| 日韩av在线电影网| 欧美中文字幕视频在线观看| 最近中文字幕2019免费| 国产成人中文字幕| 国产精品视频26uuu| 中文字幕亚洲欧美在线| 亚洲视频欧洲视频| 久久69精品久久久久久国产越南| 亚洲欧美制服第一页| 欧美日韩福利电影| 日韩在线播放视频| 日韩在线观看精品| 色综合色综合久久综合频道88| 亚洲经典中文字幕| 欧美性xxxx| 亚洲欧美精品一区二区| 久久亚洲一区二区三区四区五区高| 亚洲男人天堂2024| 精品在线小视频| 日韩在线免费视频观看| 国产一区二区三区欧美| 国产精品久久久91| 国产成人黄色av| 国产精品久久久久久久久久免费| 欧美大片大片在线播放| 日韩有码在线观看| 日韩欧美精品网址| 波霸ol色综合久久| 国产精品日韩精品| 在线观看国产欧美| 欧美精品日韩www.p站| 国产精品久久久久9999| 国语自产精品视频在免费| 国产精品久久久久久婷婷天堂| 91在线视频导航| 亚洲成avwww人| 欧美激情在线观看视频| 久久久精品网站| 久久免费视频这里只有精品| 久久久久久久久久久91| 亚洲欧美制服中文字幕| 福利精品视频在线| 国产成人亚洲综合91精品| 国产精品一区二区久久久| 91欧美日韩一区| 亚洲精品美女在线观看| 好吊成人免视频| 亚洲国产精品久久久久秋霞不卡| 992tv在线成人免费观看| 欧美午夜丰满在线18影院| 欧美激情女人20p|