日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
C++基礎(chǔ)學(xué)習(xí)之引用和指針

引用指針C++程序語(yǔ)言中相當(dāng)重要的概念,對(duì)于初學(xué)者來(lái)說(shuō),也許會(huì)比較難懂。下面詳細(xì)介紹指針和引用。

成都創(chuàng)新互聯(lián)公司 - 成都服務(wù)器托管,四川服務(wù)器租用,成都服務(wù)器租用,四川網(wǎng)通托管,綿陽(yáng)服務(wù)器托管,德陽(yáng)服務(wù)器托管,遂寧服務(wù)器托管,綿陽(yáng)服務(wù)器托管,四川云主機(jī),成都云主機(jī),西南云主機(jī),成都服務(wù)器托管,西南服務(wù)器托管,四川/成都大帶寬,機(jī)柜大帶寬,四川老牌IDC服務(wù)商

引用和指針有如下三種區(qū)別:

1 引用必須在聲明時(shí)初始化,而指針不用;

2 對(duì)于NULL不能引用,而指針可以指向NULL;

3 引用一旦聲明,引用的對(duì)象不能改變(但對(duì)象的值可以改變);而指針可以隨時(shí)改變指向的對(duì)象。

引用能做到的,指針也可以,但指針更危險(xiǎn);

(1)引用被創(chuàng)建的同時(shí)必須被初始化(指針則可以在任何時(shí)候被初始化)。

(2)不能有NULL引用,引用必須與合法的存儲(chǔ)單元關(guān)聯(lián)(指針則可以是NULL)。

(3)一旦引用被初始化,就不能改變引用的關(guān)系(指針則可以隨時(shí)改變所指的對(duì)象)。

從上面的區(qū)別看,引用比指針安全。從編譯器的角度看,引用僅僅是一個(gè)更為安全的指針。正是因?yàn)橹羔樂(lè)浅l`活,導(dǎo)致指針在編程時(shí)出錯(cuò)的可能性也很大,可以這樣說(shuō)指針是C++中最危險(xiǎn)的。為了在不犧牲性能的情況下,更安全的利用指針特性,C++引入了引用。

從上面的區(qū)別可看出,兩者的區(qū)別全部表現(xiàn)為對(duì)指針的一個(gè)靈活特性進(jìn)行限制,如初始化、合法地址、重新賦值的限制。

下面逐條給予更多的解釋?zhuān)?/p>

1)為確保引用對(duì)象的有效性。

引用變量聲明是必須初始化,卻語(yǔ)言盡可能限制引用變量的有效性。但是注意:語(yǔ)言?xún)H是盡可能保證,并不能完全保證引用時(shí)刻有效。因?yàn)榫幾g器做不到這點(diǎn)。

如:

a)引用對(duì)象被無(wú)意析構(gòu);常表現(xiàn)為返回臨時(shí)變量的引用;引用變量的生存期比引用變量短;

b)用于初始化引用變量的變量并未被構(gòu)造,這主要是因?yàn)槭褂弥羔槼跏蓟米兞繉?dǎo)致,

如:

 
 
  1. int* p=NULL;   
  2. int& temp = *p;  

 

上面的語(yǔ)句是有效的,但是引用變量是無(wú)效的。

上面的解釋說(shuō)明了,引用雖然是安全的指針,但是并非絕對(duì)安全。引用使用不當(dāng),同樣是致命的。根據(jù)C++標(biāo)準(zhǔn),無(wú)效引用將產(chǎn)生“不確定行為”??赡苁浅鲇谛阅芊矫娴目紤],標(biāo)準(zhǔn)并未提供判斷引用時(shí)候有效的辦法(據(jù)通過(guò)假定引用變量時(shí)刻有效,減少判斷有效性的性能損失)。

2)引用變量的值不能改變。

這個(gè)假定同樣是為減少指針的誤用。也就是說(shuō)使用引用變量時(shí)不必?fù)?dān)心出現(xiàn)同一個(gè)引用變量前后所指向的實(shí)際對(duì)象發(fā)生改變的可能。

那什么時(shí)候使用引用呢?

理論上,除下面兩種情況外,都可以使用引用來(lái)替代指針(引用更安全)

一是你考慮到存在不指向任何對(duì)象的可能,在這種情況下,你能夠設(shè)置指針為空;

二是你需要能夠在不同的時(shí)刻指向不同的對(duì)象,在這種情況下,你能改變指針的指向。

***給大家一個(gè)例子,幫助理解一下。

 
 
  1. class Time//定義一個(gè)類(lèi)Time  
  2. {  
  3. public://數(shù)據(jù)成員是公有的  
  4. int hour;  
  5. int minute;  
  6. }  
  7. Time t,*p;//定義一個(gè)類(lèi)的對(duì)象t,和 Time類(lèi)的指針變量p  
  8. p=&t;//指針指向?qū)ο髏,&稱(chēng)引用,也指指針p指向了t的地址  
  9. cout<hour;//輸出指針指向的對(duì)象hour 

 

希望通過(guò)以上內(nèi)容的介紹,能夠給你帶來(lái)幫助。


名稱(chēng)欄目:C++基礎(chǔ)學(xué)習(xí)之引用和指針
當(dāng)前URL:http://www.5511xx.com/article/cdhesci.html