日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
在C++指針傳遞引用和Const關(guān)鍵字

以前,當我們將參數(shù)傳遞給函數(shù)時,我們一般使用普通變量,這稱為pass-by-value方法。但是因為傳遞給函數(shù)的變量有可以出現(xiàn)超出了范圍的問題,這樣我們實際上無法修改參數(shù)的值。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設,溆浦企業(yè)網(wǎng)站建設,溆浦品牌網(wǎng)站建設,網(wǎng)站定制,溆浦網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,溆浦網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

引用傳遞

引用傳遞是指通過引用將參數(shù)傳遞給函數(shù)。調(diào)用時,該函數(shù)可以通過使用傳入的引用來修改參數(shù)的值。

這使我們能夠:

  • 修改函數(shù)參數(shù)的值。
  • 出于性能原因,避免復制變量/對象。

以下代碼顯示了傳遞引用的示例。調(diào)用函數(shù)時,引用參數(shù)用實際參數(shù)初始化:

 
 
 
  1. #include 
  2. using namespace std;
  3. void swap(int &i,int &j){
  4.   int temp = i;
  5.   i = j;
  6.   j = temp;
  7.  }
  8. int main(){
  9.  int a = 100;
  10.  int b = 200;
  11.  swap(a,b);
  12.  cout << a << endl;
  13.  cout << b << endl;
  14. }

請注意,int &i和int &j是函數(shù)的參數(shù)swap()。

當swap()被調(diào)用時,變量a和的值b將被修改,因為它們是通過引用傳遞的。輸出將是:

 
 
 
  1. 200
  2. 100

下面有一個函數(shù)被調(diào)用triple(),有一個main()我們調(diào)用了triple()兩次。大家認為這段代碼會輸出什么?

 
 
 
  1. #include 
  2. int triple(int i) {
  3.   i = i * 3;
  4.   return i;
  5. }
  6. int main() {
  7.   int num = 1;
  8.   std::cout << triple(num) << "\n";
  9.   std::cout << triple(num) << "\n";
  10. }

函數(shù)Triple()的參數(shù)是int i,所以它在這里是通過值傳遞的;傳入的參數(shù)num不會被修改。

因此輸出為

 
 
 
  1. 3
  2. 3

將參數(shù)從 更改int i為int &i。現(xiàn)在正在做引用傳遞而不是值傳遞。你認為這現(xiàn)在會輸出什么?

 
 
 
  1. #include 
  2. int triple(int &i) {
  3.   i = i * 3;
  4.   return i;
  5. }
  6. int main() {
  7.   int num = 1;
  8.   std::cout << triple(num) << "\n";
  9.   std::cout << triple(num) << "\n";
  10. }

在第一次調(diào)用Triple()之后,num從1修改為3。因此,當?shù)诙握{(diào)用Triple()時,輸出為9。

因此輸出為

 
 
 
  1. 3
  2. 9

使用 Const 傳遞

const關(guān)鍵字告訴編譯器,這樣的變量不會改變的。

比如:double const pi = 3.14;。如果我們嘗試更改pi,編譯器將拋出錯誤。

有時,我們const在函數(shù)中使用參數(shù);這是當我們知道我們想要編寫一個函數(shù),其中參數(shù)不會在函數(shù)內(nèi)部更改的事實時。下面是一個例子:

 
 
 
  1. int triple(int const i) {
  2.  
  3.   return i * 3;
  4.  
  5. }

在這個例子中,我們沒有修改i. 如果在函數(shù)內(nèi)部triple(),i更改了 的值,則會出現(xiàn)編譯器錯誤。

因此,為了節(jié)省不修改參數(shù)值的函數(shù)的計算成本,我們實際上可以更進一步并使用const引用:

 
 
 
  1. int triple(int const &i) {
  2.   return i * 3;
  3. }

const 確保參數(shù)不會改變。但是,通過&i引用參數(shù),可以節(jié)省制作參數(shù)的計算成本。

下面有一個函數(shù)被調(diào)用,square()并且有一個main(),我們調(diào)用square()兩次。

 
 
 
  1. #include 
  2. using namespace std;
  3. int triple(int const &i) {
  4.   return i * 3;
  5. }
  6. int main(){
  7.  int a = 100;
  8.  cout << triple(a) << endl;
  9.  cout << triple(a) << endl;
  10. }

因此輸出為

 
 
 
  1. 300
  2. 300

由于我們沒有修改函數(shù)中的參數(shù),再次運行代碼,輸出應該是一樣的


文章名稱:在C++指針傳遞引用和Const關(guān)鍵字
文章路徑:http://www.dlmjj.cn/article/dhsdcgo.html