六、變量作用域
C++語言中,允許變量定義語句在程序中的任何地方,只要在是使用它之前就可以;而C語言中,必須要在函數(shù)開頭部分。而且C++允許重復(fù)定義變量,C語言也是做不到這一點(diǎn)的?聪旅娴某绦颍
#include iostream.h
int a;
int main()
{
cin >>a;
for(int i=1;i <=10;i++) //C語言中,不允許在這里定義變量
{
static int a=0; //C語言中,同一函數(shù)塊,不允許有同名變量
a+=i;
cout <<::a<< < }
return 0;
}
七、new和delete運(yùn)算符
在C++語言中,仍然支持malloc()和free()來分配和釋放內(nèi)存,同時(shí)增加了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ù)組時(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í)參來進(jìn)行初始化
3.作為函數(shù)形參的引用
引用常常被用作函數(shù)的形參。以引用代替拷貝作為形參的優(yōu)點(diǎn):
引用避免了傳遞大型數(shù)據(jù)結(jié)構(gòu)帶來的額外開銷
引用無須象指針那樣需要使用*和- >等運(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ù)沒有明顯區(qū)別,不過他們所花的時(shí)間卻有很大差異,func2()函數(shù)所用的時(shí)間開銷會(huì)比func2()函數(shù)少很多。它們還有一個(gè)差別,如果程序遞歸func1(),隨著遞歸的深入,會(huì)因?yàn)闂5暮谋M而崩潰,但func2()沒有這樣的擔(dān)憂。
4.以引用方式調(diào)用
當(dāng)函數(shù)把引用作為參數(shù)傳遞給另一個(gè)函數(shù)時(shí),被調(diào)用函數(shù)將直接對(duì)參數(shù)在調(diào)用者中的拷貝進(jìn)行操作,而不是產(chǎn)生一個(gè)局部的拷貝(傳遞變量本身是這樣的)。這就稱為以引用方式調(diào)用。把參數(shù)的值傳遞到被調(diào)用函數(shù)內(nèi)部的拷貝中則稱為以傳值方式調(diào)用。
#include iostream.h
void display(const Date &,const char*);
void swapper(Date &,Date&);
struct Date
{
int month,day,year;
};
int main()
{
static Date now={2,23,90};
static Date then={9,10,60};
display(now,Now: );
display(then,Then: );
swapper(now,then);
display(now,Now: );
display(then,Then: );
return 0;
}
void swapper(Date & dt1,Date& dt2)
{
Date save;
save=dt1;
dt1=dt2;
dt2=save;
}
void display(const Date & dt,const char *s)
{
cout < cout< }
5.以引用作為返回值
#include iostream.h
struct Date
{
int month,day,year;
};
Date birthdays[]=
{
{12,12,60};
{10,25,85};
{5,20,73};
};
const Date & getdate(int n)
{
return birthdays[n-1];
}
int main()
{
int dt=1;
while(dt!=0)
{
cout < cin>>dt;
if(dt >0 && dt<4)
{
const Date & bd=getdate(dt);
cout < }
}
return 0;
}
程序都很簡(jiǎn)單,就不講解了
相關(guān)推薦:
各地2015年計(jì)算機(jī)等級(jí)考試報(bào)名時(shí)間匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |