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