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

在C++指針傳遞引用和Const關鍵字

開發 后端
因為傳遞給函數的變量有可以出現超出了范圍的問題,這樣我們實際上無法修改參數的值。引用傳遞是指通過引用將參數傳遞給函數。調用時,該函數可以通過使用傳入的引用來修改參數的值。

[[413644]]

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

引用傳遞

引用傳遞是指通過引用將參數傳遞給函數。調用時,該函數可以通過使用傳入的引用來修改參數的值。

這使我們能夠:

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

以下代碼顯示了傳遞引用的示例。調用函數時,引用參數用實際參數初始化:

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

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

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

  1. 200 
  2. 100 

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

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

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

因此輸出為

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

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

在第一次調用Triple()之后,num從1修改為3。因此,當第二次調用Triple()時,輸出為9。

因此輸出為

使用 Const 傳遞

const關鍵字告訴編譯器,這樣的變量不會改變的。

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

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

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

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

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

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

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

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

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

因此輸出為

  1. 300 
  2. 300 

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

 

責任編輯:姜華 來源: Python之王
相關推薦

2024-02-23 18:04:37

C++const關鍵字

2011-05-17 13:04:20

Cconst

2010-01-26 14:35:11

C++關鍵字

2024-08-16 09:06:03

2024-08-06 16:28:57

2015-11-10 16:10:22

C語言StaticConst

2011-07-14 23:14:42

C++static

2023-11-19 22:52:42

2011-04-21 16:57:56

staticextern

2024-01-15 10:41:31

C++關鍵字開發

2010-02-01 14:46:53

C++關鍵字

2011-04-11 15:06:22

C++關鍵字

2010-02-02 14:27:54

C++ static關

2024-03-15 11:52:03

C++關鍵字編程

2010-02-05 15:51:06

C++ explici

2025-04-22 11:10:00

2022-02-08 08:31:52

const關鍵字C語言

2010-02-02 15:12:09

C++ explici

2010-02-06 10:09:47

C++模擬event關

2011-07-13 16:14:53

C++引用指針
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品观看 | 特级生活片 | 成人中文字幕在线 | 欧美一级片在线看 | 成人在线观看免费视频 | 国产午夜在线观看 | 日韩精品一区二区三区免费视频 | 偷拍第一页 | 成人h动漫精品一区二区器材 | 91精品一区 | 免费在线看黄 | 亚洲人人舔人人 | 美女天天操 | 91久久久久久久久久久久久 | 亚洲欧美日韩精品久久亚洲区 | 欧美日韩毛片 | 久久9久| 国产在线成人 | 在线看中文字幕 | 成人福利视频网站 | 日日干日日色 | 久草在线 | 亚洲一视频 | 久久高清亚洲 | 日本精品一区二区三区四区 | 九九热在线免费视频 | 久久视频免费看 | 国产亚韩 | 青青草亚洲| 国产午夜精品一区二区三区在线观看 | 中文字幕在线视频观看 | 欧美日韩在线一区二区 | 亚洲综合久久网 | 免费毛片网站在线观看 | 亚洲免费在线播放 | 日韩精品在线免费观看视频 | 日韩精品在线一区 | 久久69精品久久久久久久电影好 | 精品三级在线观看 | 九七午夜剧场福利写真 | 国产1区在线 |