很多剛入門c++的計算機小白,在面露難色學完指標後再接觸c++中的引用。就會有一種十分舒適的感覺。在c++中引用無論如何都是在某些方面替代指標的容易上手的工具。引用通俗一點就是別名,而指標是涉及計算機底層記憶體的位址。當然既然是工具我們就得深入了解引用。引用的實質還是指標常量,只不過更加「平易近人」首先讓我們複習以下***指標常量***
指標常量特點:指標的指向不可以修改,但是指標指向的值可以修改,後面兩字可修改
#include
using
namespace std;
intmain()
這裡就不畫記憶體條詳細解釋了。>_<
根據指標常量的特點:
a =10;
b =20
;int
&c = a;
//這就是將引用c初始化。
//int &c 錯誤
c = b
/*!!!!這並不是更改引用,而是賦值操作。
即a及a的別名c均重新變成了20*/
結合指標常量這也是非常好理解的。(也許你並不想提這幾個字)@- _ @-。
引用作函式引數
可以實現指標傳遞的功能並代替指標。我們知道引用的實質,但在我們用的時候。我們只需要考慮這就是個別名
#include
using
namespace std;
//值傳遞。只可改變形式引數,不可改變實參。
void
hanshu_1
(int a,
int b)
//位址傳遞。可改變實參。
void
hanshu_2
(int
* a,
int* b)
//引用傳遞。也可改變實參,更加通俗易懂。
void
hanshu_3
(int
&a,int
&b)int
main()
不要返回區域性變數的引用。
#include
using
namespace std;
int&
hanshu()
intmain()
上面的函式有問題。具體可自己嘗試。
棧區的基部概念:
棧區資料由編譯器管理開闢與釋放:函式的呼叫可作為左值注意!不要在函式中返回區域性變數的位址。因為區域性變數存放在棧區,資料在函式執行完後會自動釋放。
#include
using
namespace std;
int&
hanshu()
intmain()
!!!以防萬一,將來如果出錯,在上萬行**中找bug很恐怖@-_@-
void
hanshu_1
(const
int& a)
因為引用本身需要乙個合法的記憶體空間。結合指標不可以對乙個沒有指向的指標所指向的量進行賦值。
int
&a =10;
//錯誤,因為引用本身需要乙個合法的記憶體空間。
但是下面的可行。更簡潔因為編譯器幫我們作了相應的處理使其合法。
即幫我們建立了乙個臨時變數來儲存10,再引用。
const
int&a =
10;
關於引用就總結這麼多了,謝謝大家閱讀。
推薦自學c++的課程,嗶哩嗶哩up黑馬程式設計師,個人感覺課程十分nice
點選這裡
c 從入門到精通 多型
多型按字面的意思就是多種形態。當類之間存在層次結構,並且類之間是通過繼承關聯時,就會用到多型。c 多型意味著呼叫成員函式時,會根據呼叫函式的物件的型別來執行不同的函式。下面的例項中,基類 shape 被派生為兩個類,如下所示 include using namespace std class sha...
Nginx從入門到精通
1 nginx配置檔案載入機制 採用nginx s reload命令載入nginx的配置檔案,master程序讀取配置檔案,建立新的worker程序,向老的worker程序傳送shutdown命令。老的worker程序不再接受新的請求,待老的請求處理完成後,就會停掉。2 location匹配機制 當...
scrot 從入門到精通
無論是撰寫技術教程,還是展示桌面或應用,恐怕 scrot 都是必不可少的工具。scrot 是螢幕抓圖工具中的 皎皎 佼佼者,它小巧而不失為強大,精練而不缺少靈活。scrot 主要用在命令列下,它使用 imlib2 庫來抓取並儲存影象。在 ubuntu 中,可以使用sudo apt get insta...