七、new和delete運(yùn)算符
在C++語(yǔ)言中,仍然支持malloc()和free()來(lái)分配和釋放內(nèi)存,同時(shí)增加了new和delete來(lái)管理內(nèi)存。
1.為固定大小的數(shù)組分配內(nèi)存
#include iostream.h
int main()
{
int *birthday=new int[3];
birthday[0]=6;
birthday[1]=24;
birthday[2]=1940;
cout< < delete [] birthday; //注意這兒
return 0;
}
在刪除數(shù)組時(shí),delete運(yùn)算符后要有一對(duì)方括號(hào)。
2.為動(dòng)態(tài)數(shù)組分配內(nèi)存
#include iostream.h
#include stdlib.h
int main()
{
int size;
cin>>size;
int *array=new int[size];
for(int i=0;i array[i]=rand();
for(i=0;i cout<<'\n'< delete [] array;
return 0;
}
八、引用型變量
在C++中,引用是一個(gè)經(jīng)常使用的概念。引用型變量是其他變量的一個(gè)別名,我們可以認(rèn)為他們只是名字不相同,其他都是相同的。
1.引用是一個(gè)別名
C++中的引用是其他變量的別名。聲明一個(gè)引用型變量,需要給他一個(gè)初始化值,在變量的生存周期內(nèi),該值不會(huì)改變。& 運(yùn)算符定義了一個(gè)引用型變量:
int a;
int& b=a;
先聲明一個(gè)名為a的變量,它還有一個(gè)別名b。我們可以認(rèn)為是一個(gè)人,有一個(gè)真名,一個(gè)外號(hào),以后不管是喊他a還是b,都是叫他這個(gè)人。同樣,作為變量,以后對(duì)這兩個(gè)標(biāo)識(shí)符操作都會(huì)產(chǎn)生相同的效果。
#include iostream.h
int main()
{
int a=123;
int& b=a;
cout< a++;
cout< b++;
cout< return 0;
}
2.引用的初始化
和指針不同,引用變量的值不可改變。引用作為真實(shí)對(duì)象的別名,必須進(jìn)行初始化,除非滿足下列條件之一:
(1) 引用變量被聲明為外部的,它可以在任何地方初始化
(2) 引用變量作為類的成員,在構(gòu)造函數(shù)里對(duì)它進(jìn)行初始化
(3) 引用變量作為函數(shù)聲明的形參,在函數(shù)調(diào)用時(shí),用調(diào)用者的實(shí)參來(lái)進(jìn)行初始化
3.作為函數(shù)形參的引用
引用常常被用作函數(shù)的形參。以引用代替拷貝作為形參的優(yōu)點(diǎn):
引用避免了傳遞大型數(shù)據(jù)結(jié)構(gòu)帶來(lái)的額外開(kāi)銷
引用無(wú)須象指針那樣需要使用*和->等運(yùn)算符
#include iostream.h
void func1(s p);
void func2(s& p);
struct s
{
int n;
char text[10];
};
int main()
{
static s str={123,China};
func1(str);
func2(str);
return 0;
}
void func1(s p)
{
cout< cout< }
void func2(s& p)
{
cout< cout< }
從表面上看,這兩個(gè)函數(shù)沒(méi)有明顯區(qū)別,不過(guò)他們所花的時(shí)間卻有很大差異,func2()函數(shù)所用的時(shí)間開(kāi)銷會(huì)比f(wàn)unc2()函數(shù)少很多。它們還有一個(gè)差別,如果程序遞歸func1(),隨著遞歸的深入,會(huì)因?yàn)闂5暮谋M而崩潰,但func2()沒(méi)有這樣的擔(dān)憂。
相關(guān)推薦:2010年9月計(jì)算機(jī)等級(jí)考試試題及答案解析專題預(yù)告:名師解析2010年9月計(jì)算機(jī)等級(jí)考試試題答案
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |