C++ 中引用和指針的關(guān)系實(shí)例詳解
C++ 中引用和指針的關(guān)系實(shí)例詳解
1.引用在定義時(shí)必須初始化,指針沒有要求
int &rNum; //未初始化不能通過(guò)編譯 int *pNum; //可以
2. 一旦一個(gè)引用被初始化為指向一個(gè)對(duì)象,就不能再指向
其他對(duì)象,而指針可以在任何時(shí)候指向任何一個(gè)同類型對(duì)象
int iNum = 10; int iNum2 = 20; int &rNum = iNum; &rNum = iNum2; //不能通過(guò)
3. 沒有NULL引用,但有NULL指針。
int *pNum = NULL; //可以 int &rNum = NULL;//不可以
4. 在sizeof中含義不同:引用結(jié)果為引用類型的大小,
但指針始終是地址空間所占字節(jié)個(gè)數(shù)。
char c1 = 1; char* pc = &c1; char& rc = c1; cout<<sizeof(pc)<<sizeof(rc)<<endl; //輸出4 1
5. 引用自加改變變量的內(nèi)容,指針自加改變了指針指向
rNum++; //指針的內(nèi)容改變 pNum++; //指針改變
6. 有多級(jí)指針,但是沒有多級(jí)引用
int &&rNum ; //不可以 int **ppNum; //可以
7.引用比指針使用起來(lái)相對(duì)更安全
指針和引用的底層實(shí)現(xiàn)
int Num = 10; 012213BE mov dword ptr [Num],0Ah int &rNum = Num; 012213C5 lea eax,[Num] 012213C8 mov dword ptr [rNum],eax int *pNum =&Num; 012213CB lea eax,[Num] 012213CE mov dword ptr [pNum],eax
底層的實(shí)現(xiàn)方式相同,都是按照指針的方式來(lái)實(shí)現(xiàn)的
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)最大間隙問題實(shí)例
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)最大間隙問題的方法,是一個(gè)比較經(jīng)典的算法設(shè)計(jì)問題,對(duì)于學(xué)習(xí)算法設(shè)計(jì)有一定的借鑒價(jià)值,需要的朋友可以參考下2014-09-09
C++深入講解類與對(duì)象之OOP面向?qū)ο缶幊膛c封裝
學(xué)習(xí)過(guò)C語(yǔ)言的小伙伴知道:C語(yǔ)言是面向過(guò)程的,關(guān)注的是過(guò)程,分析出求解問題的步驟,通過(guò)函數(shù)調(diào)用逐步解決問題,接下來(lái)讓我們?cè)敿?xì)的了解2022-05-05
C++課程設(shè)計(jì)之圖書館管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++課程設(shè)計(jì)之圖書館管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
C語(yǔ)言的數(shù)組學(xué)習(xí)入門之對(duì)數(shù)組初始化的操作
這篇文章主要介紹了C語(yǔ)言的數(shù)組學(xué)習(xí)入門之?dāng)?shù)組初始化的操作,是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-12-12

