日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【小白学习C++ 教程】八、在C++指针传递引用和Const关键字

發布時間:2024/10/8 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【小白学习C++ 教程】八、在C++指针传递引用和Const关键字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

@Author:Runsen

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

引用傳遞

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

這使我們能夠:

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

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

#include <iostream>using namespace std;void swap(int &i,int &j){int temp = i;i = j;j = temp;}int main(){int a = 100;int b = 200;swap(a,b);cout << a << endl;cout << b << endl;}

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

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

200 100

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

#include <iostream>int triple(int i) {i = i * 3;return i; }int main() {int num = 1;std::cout << triple(num) << "\n";std::cout << triple(num) << "\n"; }

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

因此輸出為

3 3

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

#include <iostream>int triple(int &i) {i = i * 3;return i; }int main() {int num = 1;std::cout << triple(num) << "\n";std::cout << triple(num) << "\n"; }

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

因此輸出為

3 9

使用 Const 傳遞

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

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

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

int triple(int const i) {return i * 3;}

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

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

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

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

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

#include <iostream>using namespace std;int triple(int const &i) {return i * 3; }int main(){int a = 100;cout << triple(a) << endl;cout << triple(a) << endl; }

因此輸出為

300 300

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

總結

以上是生活随笔為你收集整理的【小白学习C++ 教程】八、在C++指针传递引用和Const关键字的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。