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

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

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

對于經驗豐富的編程人員來說,C++編程語言應該是他們經常使用于程序開發(fā)的一種實用性語言。那么,在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++動態(tài)數組

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++常規(guī)DLL

2010-02-03 10:50:33

C++多態(tài)

2011-04-11 09:47:50

C++內存管理

2010-02-05 14:36:20

C++智能指針

2010-02-03 17:06:36

C++對象復制

2010-02-05 14:12:46

C++聲明放置

2010-02-02 14:45:35

C++ typeof

2023-11-17 14:10:08

C++函數

2010-02-06 17:21:20

C++ CreateT
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产午夜影院 | 久久精品国产a三级三级三级 | 久久91精品国产一区二区 | 欧美精品一区二区三区在线播放 | 亚洲视频一区二区三区 | 18gay男同69亚洲网站 | 欧美午夜精品理论片a级按摩 | 亚洲视频精品在线 | 麻豆一区一区三区四区 | www.中文字幕 | 欧美日韩在线免费观看 | 国产乱码久久久久久一区二区 | 伊人二区 | 理论片免费在线观看 | 欧美视频在线播放 | 国产精品一区二 | 91精品国产色综合久久 | 久久国际精品 | 美人の美乳で授乳プレイ | 亚洲高清视频在线观看 | 日日艹夜夜艹 | 国产在线精品一区 | 91国产在线播放 | 国产综合久久久 | 99亚洲精品| 欧美日韩不卡 | 天堂一区二区三区 | 在线观看www | av无遮挡 | 小早川怜子xxxxaⅴ在线 | 亚洲字幕在线观看 | 欧美亚洲综合久久 | 噜啊噜在线 | av黄色在线观看 | 久久精品国产久精国产 | 国产一区二区三区 | 久久精品久久久 | 伊人一二三 | 国产精品2区 | 欧美一级淫片免费视频黄 | 精品欧美一区二区三区精品久久 |