日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ 引用 (Reference)

發布時間:2023/12/8 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ 引用 (Reference) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C++ Reference


引用實際上是指針的一個擴展,但是又不同于指針。
首先,引用必須引用一個已經存在的變量。不像指針,指針可以被聲明為空指針,但引用不可以。引用本身并不是一個新的變量,它并不實際占用內存空間,也并不實際儲存數據,它僅僅是一個變量的引用。

舉例說明:

#include <iostream>#define LOG(x) std::cout << x << std::endl;int main() {int a = 5;int& ref = a;std::cin.get(); }

在上述代碼中,ref 是變量 a 的引用。實際上,ref 相當于變量 a 的別名。 如果將上述代碼編譯,實際上只會在內存空間中創建一個變量 a。

如果改變 ref 的值,打印 a:

#include <iostream>#define LOG(x) std::cout << x << std::endl;int main() {int a = 5;int& ref = a;ref = 2;LOG(a);std::cin.get(); }

則 a 的值也為 2.

即變量的引用僅僅相當于該變量的別名,并不會重新生成一個變量。

那么既然僅僅只是給變量起一個別名,什么情況下我們需要用到引用呢?就上述情況而言,我們直接調用變量 a 就可以了,為啥要多寫幾行代碼來創建一個引用呢?

看下面的例子:

#include <iostream>#define LOG(x) std::cout << x << std::endl;void Increment(int value) {value++; }int main() {int a = 5;Increment(a);LOG(a);std::cin.get(); }

如果我們想要變量 a 調用 Increment,然后自加 1. 上述代碼是無法實現這個結果的 ,實際輸出 a 的值仍然為 5。這是因為 將變量 a 傳給方法 Increment, 相當于復制該變量到方法里。

等同于如下效果:

void Increment(int value) {int a = 5;value++; }

所以并不會改變變量 a 的值。

那想要達到我們想要的結果,如何做呢?

首先,當然,指針是可以做到的。指針指向的是變量的內存空間中的地址,即變量實際存在的地方。如果我們直接把變量的地址傳給 Increment 函數,那肯定是可以改變該變量的值的,如下所示:

#include <iostream>#define LOG(x) std::cout << x << std::endl;void Increment(int* value) {(*value)++; }int main() {int a = 5;Increment(&a);LOG(a);std::cin.get(); }

輸出結果為 6.

可以看到,指針確實能得到我們想要的結果。但有沒有更簡單清晰一點的方法呢?

#include <iostream>#define LOG(x) std::cout << x << std::endl;void Increment(int& value) {value++; }int main() {int a = 5;Increment(a);LOG(a);std::cin.get(); }

運行結果為 6. 可見引用也可以實現我們的目的,并且讓代碼看起來更加簡潔。

再看一個例子:

#include <iostream>#define LOG(x) std::cout << x << std::endl;int main() {int a = 5;int b = 8; int& ref = a;ref = b;LOG(a);LOG(b);std::cin.get(); }

輸出結果為 8, 8。 即變量 a 等于 b = 8。 為什么會這樣? 因為引用只能被初始化一次,指向一個變量,并且不能夠改變。同時,引用在被聲明的同時一定要被初始化。當然,指針是可以先指向一個變量,然后指向另一個變量的。

總結

以上是生活随笔為你收集整理的C++ 引用 (Reference)的全部內容,希望文章能夠幫你解決所遇到的問題。

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