引用和指针的比较
引用和指針的比較
引用是C++中的概念,初學(xué)者容易把二者混淆。
例1:
?????? int m;
?????? int &n = m;
?????? 在這里,n相當(dāng)于是m的別名,對(duì)n的任何操作就是對(duì)m的操作。n既不是m的拷貝,也不是指向m的指針,其實(shí)n就是m它自己。
?
例2:
?????? int i = 0;
?????? int j = 5;
?????? int &k = i;
?????? k = j;?????????
示例程序中,k被初始化為i的引用。k = j并不是將k修改為j的引用,只是把k的值變?yōu)?。由于k是i的引用,所以i的值也變?yōu)榱?。
?
引用的一些規(guī)則如下:
1,? 引用被創(chuàng)建的同時(shí)必須被初始化,指針則可以在任何時(shí)候被初始化。
2,? 不能有NULL引用,引用必須與合法的存儲(chǔ)單元相關(guān)聯(lián),指針則可以是NULL。
3,? 一旦引用被初始化,就不能改變引用的關(guān)系,指針則可以隨時(shí)改變所指的對(duì)象。
?
引用的主要功能是傳遞函數(shù)的參數(shù)和返回值。C++中,函數(shù)的參數(shù)和返回值的傳遞方式有三種:值傳遞,指針傳遞和引用傳遞。(注:指針傳遞也是值傳遞的一種,只不過(guò)此處的值是指針。)對(duì)比三種傳遞方式,我們發(fā)現(xiàn)“引用傳遞”的性質(zhì)像“指針傳遞”,而書(shū)寫(xiě)方式像“值傳遞”。
實(shí)際上,引用能夠做的任何事情,指針也可以做,為什么還有“引用”?答案是:“用恰當(dāng)?shù)墓ぞ咦銮∪缙浞值墓ぷ鳌薄?/p>
指針能夠毫無(wú)約束地操作內(nèi)存中的任何東西,盡管指針功能強(qiáng)大,但是非常危險(xiǎn)。如果只需要借用一下某個(gè)對(duì)象的別名,那就用“引用”,而不要用“指針”,以免發(fā)生意外。比如說(shuō),某人需要一份證明,本來(lái)在文件上蓋一個(gè)章就可以了,如果把鎖工章的鑰匙給了他,那么他就獲得了不該有的權(quán)利。
?
注:摘自林銳博士的《高質(zhì)量C++編程指南》。
轉(zhuǎn)載于:https://www.cnblogs.com/lxd2502/p/4599295.html
超強(qiáng)干貨來(lái)襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
- 上一篇: Java与C++进行系统间交互:Prot
- 下一篇: OverFeat4.2的安装和使用