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