4.3 引用
1引用的概念
引用是個(gè)別名,建立時(shí)須用另一個(gè)數(shù)據(jù)對(duì)象(如一個(gè)變量)的名字進(jìn)行初始化,以指定該引用所代表的數(shù)據(jù)對(duì)象。此后,對(duì)引用的任何實(shí)操作實(shí)際上就是對(duì)所代表的數(shù)據(jù)對(duì)象的操作。一個(gè)引用變量要占用相當(dāng)于一個(gè)指針?biāo)枰目臻g,但系統(tǒng)不會(huì)為它所代表的數(shù)據(jù)對(duì)象再次分配空間。
在類(lèi)型名后跟引用運(yùn)算符“&”,以及引用名來(lái)創(chuàng)建一個(gè)引用。引用名就是一個(gè)變量名。
注意:引用運(yùn)算符與地址操作符使用相同的符號(hào)(即運(yùn)算符重載),但它們含義不一樣。引用運(yùn)算符只在聲明變量的時(shí)候使用,它放在類(lèi)型名后面。
使用引用時(shí)應(yīng)遵循一定的規(guī)則:
(1)引用被創(chuàng)建時(shí),它必須立即被初始化(指針則可以在任何時(shí)候被初始化)。
(2)一旦一個(gè)引用被初始化為一個(gè)對(duì)象的引用,它就不能再被改變?yōu)閷?duì)另一個(gè)對(duì)象的引用。(指針則可以在任何時(shí)候改變?yōu)橹赶蛄硪粋(gè)對(duì)象。)
(3)不可能有NULL引用。必須確保引用是具體合法的對(duì)象的引用(即引用應(yīng)和一塊合法的存儲(chǔ)空間關(guān)聯(lián))。
2用引用傳遞函數(shù)參數(shù)
引用的一個(gè)重要用途就是作為函數(shù)的參數(shù)。在C+ +中,函數(shù)參數(shù)傳遞采用的是傳值,如果要有占用空間大的對(duì)象(例如一個(gè)大的結(jié)構(gòu)對(duì)象或類(lèi)對(duì)象)需要作為函數(shù)參數(shù)傳遞的時(shí)候,在C語(yǔ)言中的做法往往是使用指針,因?yàn)檫@樣可以避免將整個(gè)實(shí)參對(duì)象數(shù)據(jù)全部拷貝給形式參數(shù),可以提高程序的執(zhí)行效率。在C+ +中,既可以使用指針,但由于C+ +引入了引用概念,亦可以用引用來(lái)做同樣的事情。引用作為參數(shù)的最大好處是:引用參數(shù)既可以像指針那樣工作,其使用方式又和一般變量相同。也就是說(shuō),引用比指針具有更好的可讀性。
4.4 動(dòng)態(tài)存儲(chǔ)分配
動(dòng)態(tài)存儲(chǔ)分配功能在C+ +中是通過(guò)new和delete運(yùn)算符來(lái)實(shí)現(xiàn)的。
1使用new獲得動(dòng)態(tài)內(nèi)存空間
運(yùn)算符new用于申請(qǐng)動(dòng)態(tài)存儲(chǔ)空間,它的操作數(shù)為某種數(shù)據(jù)類(lèi)型且可以帶有初值表達(dá)式或元素個(gè)數(shù)。new返回一個(gè)指向其操作類(lèi)型變量的指針。使用new對(duì)某種類(lèi)型變量進(jìn)行動(dòng)態(tài)分配的語(yǔ)法格式為:
<指針>=new<類(lèi)型>;
其中,<類(lèi)型>表示要分配的變量類(lèi)型(如char、int、double);<指針>表示指向<類(lèi)型>類(lèi)型變量的指針(如char*、int*、double*等)。
2使用delete釋放動(dòng)態(tài)內(nèi)存空間
當(dāng)動(dòng)態(tài)分配的內(nèi)存空間在程序中使用完畢之后,必須顯式地將它們釋放。這樣做的目的是把閑置不用的堆內(nèi)存歸還給系統(tǒng),使其可以被系統(tǒng)重新分配。在C+ +程序中由new分配的動(dòng)態(tài)內(nèi)存空間必須通過(guò)delete運(yùn)算符釋放。使用delete對(duì)動(dòng)態(tài)分配的單個(gè)變量進(jìn)行釋放的語(yǔ)法格式為:
delete<指針>;
其中,<指針>表示指向單個(gè)變量的指針。
使用delete對(duì)動(dòng)態(tài)分配的數(shù)組進(jìn)行釋放的語(yǔ)法格式為:
delete[]<指針>;
其中,<指針>表示指向數(shù)組首元素的指針。delete之后的方括號(hào)指明將要釋放的內(nèi)存空間中存儲(chǔ)著數(shù)組元素。程序中需要分配動(dòng)態(tài)內(nèi)存空間,則new和delete總是成對(duì)出現(xiàn)的。
編輯推薦:
2014年上半年計(jì)算機(jī)等級(jí)考試報(bào)名時(shí)間預(yù)告
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |