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