成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C++數組參數應用方式探討

開發 后端
在這篇文章中,我們將會詳細為大家介紹有關C++數組參數的一些基本概念以及具體的應用方式,讓大家輕松掌握這方面的內容。

對于經驗豐富的編程人員來說,C++編程語言應該是他們經常使用于程序開發的一種實用性語言。那么,在C++中,C++數組參數永遠不會按值傳遞。它是傳遞***個元素(準確地說是第0個)的指針。

例如,如下聲明:

  1. void putValues(int[10]); 

被編譯器視為:

  1. void putValues(int*); 

C++數組參數的長度與參數聲明無關。因此,下列三個聲明是等價的:

  1. void putValues(int*);  
  2. void putValues(int[]);  
  3. void putValues(int[10]); 

因為數組被傳遞為指針,所以這對程序員有兩個含義:

1、在被調函數內對參數數組的改變將被應用到數組實參上而不是本地拷貝上。當用作實參的數組必須保持不變時,程序員需要保留數組的拷貝。函數可以通過把參數類型聲明為const來表明不希望改變數組元素:

  1. void putValues(const int[10]); 

2、數組長度不是參數類型的一部分。函數不知道傳遞給它的數組的實際長度,編譯器也不知道,當編譯器對實參類型進行參數類型檢查時,并不檢查數組的長度。
例如:

  1. void putValues(int[10]); //視為int*  
  2. int main()  
  3. {  
  4. int i, j[2];  
  5. putValues(&i); //ok:&i是int*; 潛在的運行錯誤  
  6. putValues(j); //ok:j被轉換成第0個元素的指針  
  7. // 實參類型為int*:潛在的運行錯誤  
  8. return 0;  

參數的類型檢查只能保證putValues()的再次調用都提供了int*型的實參。類型檢查不能檢驗實參是一個10元素的數組。

習慣上,C風格字符串是字符的數組,它用一個空字符編碼作為結尾。但是所有其他類型,包括希望處理內含字符的字符數組,必須以某種方式在向函數傳遞實參時使其知道它的長度。一種常見的機制是提供一個含有C++數組參數的長度的額外參數。例如:

  1. void putValues(int[], int size);  
  2. int main()  
  3. {  
  4. int i,j[2];  
  5. putValues(&i, 1);  
  6. putValues(j, 2);  
  7. return 0;  

另外一種機制是將參數聲明為數組的引用。當參數是一個數組類型的引用時,數組長度成為參數和類型的一部分,編譯器檢查數組實參的長度與在函數參數類型中指定的長度是否匹配。

  1. // 參數為10個int的數組  
  2. // parameter is a reference to an array of 10 ints  
  3. void putValues(int (&arr)[10]);  
  4. int main()  
  5. {  
  6. int i, j[2];  
  7. int a[10];  
  8. putValues(i); // 錯誤:實參不是10個int的數組  
  9. putValues(j); // 錯誤:實參不是10個int的數組  
  10. putValues(a); // 正確  
  11. return 0;  

因為C++數組參數的長度現在是參數類型的一部分,所以putValues()的這個版本只接受10個int的數組。這限制了可以作為實參被傳遞給putValues()的數組的種類。但是,它也使函數的實現更加簡單。

【編輯推薦】

  1. C++獲取當前路徑實現技巧分享
  2. C++反射機制具體實現方法詳解
  3. C++模板限制實際應用方式探討
  4. C++字符串分割函數具體使用方法總結
  5. C++異常傳遞三種不同方式介紹
責任編輯:曹凱 來源: 博客園
相關推薦

2010-02-03 10:11:17

C++動態數組

2010-02-03 16:29:19

C++ sizeof

2010-02-04 11:15:28

C++模板限制

2010-02-06 17:09:29

C++文件拷貝

2010-02-04 17:49:04

C++參數傳遞

2010-02-06 17:39:52

C++ strtok

2010-02-05 16:46:58

C++ TinyXml

2010-02-03 15:06:02

C++可變參數表

2010-02-03 15:27:26

C++ static

2010-02-04 14:29:45

C++ typenam

2010-02-06 16:39:45

C++ assert(

2010-02-06 16:21:35

C++常規DLL

2010-02-03 10:50:33

C++多態

2011-04-11 09:47:50

C++內存管理

2010-02-03 17:06:36

C++對象復制

2010-02-05 14:12:46

C++聲明放置

2010-02-02 14:45:35

C++ typeof

2010-02-05 14:36:20

C++智能指針

2023-11-17 14:10:08

C++函數

2010-02-06 17:21:20

C++ CreateT
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩在线一区 | 色综合天天天天做夜夜夜夜做 | 成人精品一区二区三区中文字幕 | 欧美一级欧美一级在线播放 | 国产精品久久久久久久白浊 | 午夜理伦三级理论三级在线观看 | 国产精品欧美一区二区三区不卡 | 欧美一区二区三区电影 | 成人在线观看免费观看 | 国产成人一区二区三区 | 中文字幕一区二区三区日韩精品 | 精品国产免费一区二区三区五区 | 人操人免费视频 | 国产永久免费 | 日韩精品在线网站 | 亚洲免费一区 | 日韩日韩日韩日韩日韩日韩日韩 | 麻豆视频在线免费观看 | 亚洲精品一区二区三区在线观看 | 久久一区二区三区电影 | 91看片免费 | 一区二区精品视频 | 国产一二区视频 | 久久久久亚洲 | 99精品热视频| 视频一区二区在线观看 | 欧美二区三区 | 中文字幕免费视频 | 亚洲欧美激情网 | 日韩插插 | 国产精品久久久久久久久久妇女 | 亚洲九九 | 99久久99热这里只有精品 | 亚洲视频欧美视频 | 欧美精品久久久久久久久老牛影院 | h在线免费观看 | 黄色电影在线免费观看 | 欧美精品一区在线 | 亚洲第一av网站 | 欧美精品久久久久久久久久 | 亚洲视频在线免费观看 |