版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第五章構(gòu)造數(shù)據(jù)類型丘志杰電子科技大學(xué)計(jì)算機(jī)學(xué)院軟件學(xué)院2022/12/211第五章構(gòu)造數(shù)據(jù)類型丘志杰2022/12/191枚舉類型
“枚舉”是指將變量所有可能的取值一一列舉出來(lái),變量的取值只限于列舉出來(lái)的常量。枚舉類型的聲明的一般形式如下:當(dāng)沒給各枚舉常量指定值時(shí),其值依次默認(rèn)為0、1、2、…;在定義枚舉類型時(shí),也可使用賦值號(hào)另行指定枚舉常量的值。
enum枚舉類型名{枚舉常量1,枚舉常量2,…,枚舉常量n};枚舉!枚舉類型“枚舉”是指將變量所有可能的取值一一列舉出來(lái),例:NeedToDo舉例
例:NeedToDo舉例數(shù)組
數(shù)組是一組在內(nèi)存中依次連續(xù)存放的、具有同一類型的數(shù)據(jù)變量所組成的集合體。數(shù)組元素用數(shù)組名與帶方括號(hào)的數(shù)組下標(biāo)一起標(biāo)識(shí)。數(shù)組數(shù)組是一組在內(nèi)存中依次連續(xù)存放的、具有同一類型的數(shù)據(jù)變一維數(shù)組定義與使用
一維數(shù)組定義的一般形式為:
數(shù)據(jù)類型數(shù)組名[常量表達(dá)式];說(shuō)明:數(shù)組元素的類型可以是void型以外的任何數(shù)據(jù)類型。數(shù)組名代表數(shù)組元素在內(nèi)存中的起始地址,是一個(gè)地址常量。一維數(shù)組定義與使用一維數(shù)組定義的一般形式為:數(shù)組定義之后,系統(tǒng)會(huì)將從內(nèi)存中為其分配一塊連續(xù)的存儲(chǔ)空間,從第1個(gè)數(shù)據(jù)元素開始依次存放各個(gè)數(shù)組元素。 例如:inta[5];數(shù)組定義之后,系統(tǒng)會(huì)將從內(nèi)存中為其分配一塊連續(xù)的存儲(chǔ)一維數(shù)組的初始化
一維數(shù)組初始化的語(yǔ)法形式為: 數(shù)據(jù)類型數(shù)組名[常量表達(dá)式]={初值1,初值2,…,初值n};例如:
intarray[3]={5,6,7};intarray2[3]={1,2};一維數(shù)組的初始化一維數(shù)組初始化的語(yǔ)法形式為:存取一維數(shù)組元素的語(yǔ)法形式為:
數(shù)組名[下標(biāo)表達(dá)式];
讀數(shù)組元素的地址通過(guò)數(shù)組名來(lái)讀取,格式如下:
數(shù)組名+整型表達(dá)式;
或
&數(shù)組名[下標(biāo)表達(dá)式];
存取一維數(shù)組元素的語(yǔ)法形式為:使用數(shù)組要注意的地方在使用數(shù)組時(shí)最常犯的錯(cuò)誤是下標(biāo)越界。數(shù)組名是一個(gè)地址常量,不能作為左值(賦值的目標(biāo))。因此,不能將一個(gè)數(shù)組整體拷貝給另外一個(gè)數(shù)組。例如:
inta[5],c[5],i;a=c; //錯(cuò)誤!
正確的方法是將對(duì)應(yīng)的元素進(jìn)行拷貝:
for(i=0;i<5;i++)a[i]=c[i];
使用數(shù)組要注意的地方在使用數(shù)組時(shí)最常犯的錯(cuò)誤是下標(biāo)越界。字符數(shù)組與字符串
存放字符型數(shù)據(jù)的數(shù)組稱為字符數(shù)組。
1.用字符進(jìn)行初始化
例如:
char
s1[]={'C','h','i','n','a'};2.用字符串進(jìn)行初始化
例如:
char
s2[]="China";字符數(shù)組與字符串存放字符型數(shù)據(jù)的數(shù)組稱為字符數(shù)組。字符數(shù)組的使用
字符數(shù)組也是數(shù)組,我們同樣可以通過(guò)數(shù)組名及下標(biāo)引用數(shù)組中的元素。為方便對(duì)字符與字符串的處理,C++提供了許多專門處理字符與字符串的函數(shù)。參看P118表5-1。字符數(shù)組的使用字符數(shù)組也是數(shù)組,我們同樣可以通過(guò)數(shù)組名及下指針指針是C++語(yǔ)言最重要特性之一,也是C++的主要難點(diǎn)。指針提供了一種較為直觀的地址操作的手段,正確地使用指針,可以方便、靈活而有效地組織和表示復(fù)雜的數(shù)據(jù)。指針指針是C++語(yǔ)言最重要特性之一,也是C++的主要難點(diǎn)。地址與指針地址:當(dāng)定義一個(gè)變量后,內(nèi)存中將會(huì)劃出一塊由若干個(gè)存儲(chǔ)單元組成的區(qū)域,用于保存該變量的數(shù)據(jù)。在內(nèi)存里每個(gè)存儲(chǔ)單元都有各自的編號(hào),稱為地址。指針:在C++中,提供了指針類型,它是一種用于存放內(nèi)存單元地址的變量類型,地址就存儲(chǔ)在這種指針類型的變量中。正因?yàn)橹羔樧兞看鎯?chǔ)的是地址,用它來(lái)指明內(nèi)存單元,所以形象地稱這種地址變量為指針。
地址與指針地址:當(dāng)定義一個(gè)變量后,內(nèi)存中將會(huì)劃出一塊由若指針變量的定義例如:
int
*ip;//定義了一個(gè)int型的指針變量ipfloat
*fp;//定義了一個(gè)float型指針變量fptypedefintA[10];A*ap;//定義了一個(gè)A類型的指針變量apsizeof(ip)=sizeof(fp)=sizeof(ap)=4;
定義指針變量的格式如下:數(shù)據(jù)類型*變量名;
指針變量的定義例如:定義指針變量的格式如下:數(shù)據(jù)類型指針的初始化與賦值(1)不要將一個(gè)非地址常量、變量以及無(wú)意義的實(shí)際地址賦給指針變量。如:
int*p=100;//int*p=(int*)100;(對(duì)嗎?)
int*p=(char*)100;(2)可以使用一個(gè)已初始化的指針去給另一個(gè)指針賦值,但類型必須一致如果不一致,可進(jìn)行強(qiáng)制類型轉(zhuǎn)換。
char*p=NULL;int*ip=(int*)p+100;
數(shù)據(jù)類型*指針變量名=初始地址表達(dá)式;
指針的初始化與賦值(1)不要將一個(gè)非地址常量、變量以及無(wú)意義(3)對(duì)于基本數(shù)據(jù)類型的變量、數(shù)組元素我們可以使用取地址運(yùn)算符&來(lái)獲得它們的地址,但是也只有類型一致才能賦值。
inta[10];//定義int型數(shù)組
int*i_pointer=a;//定義并初始化int型指針(4)有一種特殊的void類型指針,可以存儲(chǔ)任何的類型地址;但將一個(gè)void類型的地址賦值給非void類型的指針變量,要使用類型強(qiáng)制轉(zhuǎn)換。
voidv;//錯(cuò)誤,不能定義void類型的變量
void*vp;//定義void類型的指針(3)對(duì)于基本數(shù)據(jù)類型的變量、數(shù)組元素我們可以使用取地址運(yùn)算指針運(yùn)算指針通常進(jìn)行下列幾種運(yùn)算:賦值運(yùn)算、取值運(yùn)算、算術(shù)運(yùn)算、相減運(yùn)算、比較運(yùn)算。(1)*和&運(yùn)算
*:指針運(yùn)算符,&:取地址運(yùn)算符。
例如:
inta[4]={1,2,3};int*ip=&a[2];cout<<*ip;*ip=100;
指針運(yùn)算指針通常進(jìn)行下列幾種運(yùn)算:賦值運(yùn)算、取值運(yùn)算(2)指針與整數(shù)的加減運(yùn)算
指針的加減運(yùn)算與普通變量的加減運(yùn)算不同,由于指針存儲(chǔ)的是變量的內(nèi)存地址,指針加上或減去一個(gè)整數(shù)n,表示指針從當(dāng)前位置向后或向前移動(dòng)n個(gè)sizeof(數(shù)據(jù)類型)長(zhǎng)度的存儲(chǔ)單元。因此對(duì)于不同的數(shù)據(jù)類型,n的實(shí)際大小就不同。(2)指針與整數(shù)的加減運(yùn)算(3)指針自增、自減運(yùn)算
指針的自增、自減運(yùn)算是指針加減運(yùn)算的特例。指針的自增或自減表示指針從當(dāng)前位置向后或向前移動(dòng)sizeof(數(shù)據(jù)類型)長(zhǎng)度的存儲(chǔ)單元。
例如:
int*p,a=5;p=&a;p++;//指針p后移4個(gè)字節(jié)(3)指針自增、自減運(yùn)算(4)兩指針相減
當(dāng)兩個(gè)指針指向同一數(shù)組時(shí),兩個(gè)指針的相減才有意義。兩個(gè)指針相減的結(jié)果為一整數(shù),表示兩個(gè)指針之間數(shù)組元素的個(gè)數(shù)。
(5)兩個(gè)指針的比較運(yùn)算
兩個(gè)指針的比較一般用于下列兩種情況:一是比較兩個(gè)指針?biāo)赶虻膶?duì)象在內(nèi)存中的位置關(guān)系;二是判斷指針是否為空指針。
(4)兩指針相減void類型指針
指向void類型的指針是一種不確定類型的指針,它可以指向任何類型的變量。實(shí)際使用void型指針時(shí),只有通過(guò)強(qiáng)制類型轉(zhuǎn)換才能使void型指針得到具體變量的值。在沒有轉(zhuǎn)換前void型指針不能進(jìn)行指針的算術(shù)運(yùn)算。例如:
void
*vp;//定義了一個(gè)void型指針vp
int
i=6,*ip;
vp=&i;//vp指向整型變量icout<<“i=”<<*vp<<endl;//錯(cuò)誤
cout<<"i="<<*(int
*)p<<endl;ip=(int
*)vp;//ip指向vp指向的變量i
cout<<"i="<<*ip<<endl;void類型指針指向void類型的指針是一種不確定指針與字符串
字符型指針:
用于存放字符型變量的地址,而字符串的本質(zhì)是以\0結(jié)尾的字符數(shù)組,一個(gè)字符型指針存儲(chǔ)了字符數(shù)組的第一個(gè)元素的地址,也就存儲(chǔ)了字符串的地址,這個(gè)指針就指向了字符串。在定義一個(gè)字符數(shù)組時(shí),可以將一個(gè)字符串常量作為初值,但將字符串常量作為初值賦給字符數(shù)組和將字符串常量作為初值賦給字符指針變量,二者的含義是不同的。例如:
charstr[5]="abcd";char*p_str="abcd";指針與字符串字符型指針:指針與數(shù)組
1使用指針操作符*存取數(shù)組指針的加減運(yùn)算的特點(diǎn)使得指針操作符特別適合處理存儲(chǔ)在一段連續(xù)內(nèi)存空間中的同類型數(shù)據(jù)。這樣,使用指針操作符來(lái)對(duì)數(shù)組及其元素進(jìn)行操作就非常方便。(1)一維數(shù)組的指針操作
當(dāng)定義數(shù)組一維數(shù)組Ta[N](T為類型),下式為存取數(shù)組元素a[i]的等效方式:*(a+i);而a+i為a[i]的地址。指針與數(shù)組1使用指針操作符*存取數(shù)組數(shù)組指針
數(shù)組指針是指向數(shù)組的指針。例如:int
(*a_p)[5];等效于下列定義方式:①typedefintI_A[5];②I_A*a_p;數(shù)組指針數(shù)組與函數(shù)
數(shù)組名是一個(gè)地址,不能當(dāng)作一個(gè)左值,但是可以作為函數(shù)的形參,接受實(shí)參傳送來(lái)的地址。當(dāng)形參接受實(shí)參傳送來(lái)的地址后,形參數(shù)組與實(shí)參共享內(nèi)存中的一塊空間。函數(shù)體通過(guò)形參對(duì)數(shù)組內(nèi)容的改變會(huì)直接作用到實(shí)參上。數(shù)組名作為形參是數(shù)組應(yīng)用的一個(gè)重要方面。
數(shù)組與函數(shù)數(shù)組名是一個(gè)地址,不能當(dāng)舉例
voidfunc(inta[],intn){ inti; for(i=0;i<n;i++) a[i]+=3;}voidmain(){ inta[]={1,2,3,4}; func(a,4); }
舉例voidfunc(inta[],intn)指向函數(shù)的指針
在程序運(yùn)行時(shí),不僅數(shù)據(jù)要占用內(nèi)存空間,程序的代碼也被調(diào)入內(nèi)存并占據(jù)一定的內(nèi)存空間。每一個(gè)函數(shù)都有函數(shù)名,實(shí)際上,這個(gè)函數(shù)名就是該函數(shù)的代碼在內(nèi)存的起始地址。
當(dāng)調(diào)用一個(gè)函數(shù)時(shí),編譯系統(tǒng)就是根據(jù)函數(shù)名找到函數(shù)代碼的首地址,從而執(zhí)行這段代碼。由此看來(lái),函數(shù)的調(diào)用形式:函數(shù)名(參數(shù)表),其實(shí)質(zhì)就是:函數(shù)代碼首地址(參數(shù)表)。函數(shù)指針:
就是指向某個(gè)函數(shù)的指針,它是專門用于存放該函數(shù)代碼首地址的指針變量。一旦定義了某個(gè)函數(shù)指針,那么,它就與函數(shù)名有同樣的作用,在程序中就可以象使用函數(shù)名一樣,通過(guò)指向該函數(shù)的指針來(lái)調(diào)用該函數(shù)。指向函數(shù)的指針在程序運(yùn)行時(shí),不僅數(shù)據(jù)要占用內(nèi)函數(shù)指針的定義語(yǔ)法形式如下:其中:數(shù)據(jù)類型為函數(shù)指針?biāo)负瘮?shù)的返回值類型;形參表則列出了該指針?biāo)负瘮?shù)的形參類型和個(gè)數(shù)。函數(shù)指針名與*外面的圓括號(hào)()是必須的,如果去掉圓括號(hào),將被解釋為函數(shù)的返回值為指針。
數(shù)據(jù)類型(*函數(shù)指針名)(形參表);
函數(shù)指針的定義語(yǔ)法形式如下:數(shù)據(jù)類型(*函數(shù)指針名)(形
函數(shù)指針在使用之前也要進(jìn)行賦值,使指針指向一個(gè)已經(jīng)存在的函數(shù)代碼的起始地址。語(yǔ)法形式為:
函數(shù)指針名=函數(shù)名;
調(diào)用函數(shù)指針指向的函數(shù)有如下兩種格式:
①函數(shù)指針名(實(shí)參表); ②(*函數(shù)指針名)(實(shí)參表);
例如:
intadd(inta,intb);//定義函數(shù)
int(*fptr)(inta,intb);//定義函數(shù)指針
fptr=add;//函數(shù)指針賦值函數(shù)指針在使用之前也要進(jìn)行賦值,使指針指向一個(gè)已經(jīng)存在的采用下列任何一種形式調(diào)用函數(shù)add:
add(1,2);
(*fptr)(1,2);
fptr(1,2);說(shuō)明:雖然三種調(diào)用形式的結(jié)果完全相同,當(dāng)用指向函數(shù)的指針調(diào)用函數(shù)add()時(shí),習(xí)慣上使用
(*fptr)(1,2),因?yàn)檫@種形式能更直觀地說(shuō)明是用指向函數(shù)的指針來(lái)調(diào)用函數(shù)。采用下列任何一種形式調(diào)用函數(shù)add:說(shuō)明:多重指針
如果已經(jīng)定義了一個(gè)指針類型,我們?cè)俣x一個(gè)指針,用于指向已經(jīng)定義的指針變量,后面定義的指針變量就是一個(gè)指向指針的指針變量,簡(jiǎn)稱指向指針的指針,這樣的指針也稱二重(級(jí))指針。三重及以上的指針統(tǒng)稱為多重指針。例如:
int**pp;
定義了一個(gè)二級(jí)指針變量,等效于下列定義方式:
typedefint*P;P*p;
例:inta,*p,**pp;p=&a;pp=&p; 多重指針如果已經(jīng)定義了一個(gè)指針類型,我們?cè)俣▌?dòng)態(tài)存儲(chǔ)分配和釋放存儲(chǔ)空間C的做法 void* malloc(size_tsize); void free(void*pMemory);例如: char*p=(char*)malloc(100); strcpy(p,”HelloWorld!”); free(p);注意:這里是以字節(jié)計(jì)算的單元數(shù)目2022/12/2132動(dòng)態(tài)存儲(chǔ)分配和釋放存儲(chǔ)空間C的做法注意:這里是以字節(jié)計(jì)算的單C++的做法使用運(yùn)算符new和delete使用形式
type是一個(gè)數(shù)據(jù)類型名,p是該類型的指針變量,new的作用就是從堆空間中分配一塊與type類型的數(shù)據(jù)一樣大小的內(nèi)存(如果分配失敗,new返回一個(gè)空指針),該內(nèi)存地址被存于指針p中。一旦不想再使用,可以用delete來(lái)釋放該內(nèi)存空間。type*p;p=newtype;deletep;2022/12/2133C++的做法使用運(yùn)算符new和deletetype是一舉例int*p;p=newint;*p=50;deletep;2022/12/2134舉例int*p;2022/12/1934幾點(diǎn)注意使用new申請(qǐng)的內(nèi)存空間是沒有名字的,只能通過(guò)指針間接訪問它們。用delete釋放的內(nèi)存空間必須是由new分配的空間,否則執(zhí)行delete時(shí)將會(huì)導(dǎo)致嚴(yán)重的錯(cuò)誤。例如:int*p;deletep;//出錯(cuò)int*p,value;p=&value;deletep;//出錯(cuò)2022/12/2135幾點(diǎn)注意使用new申請(qǐng)的內(nèi)存空間是沒有名字的,只能通過(guò)指針間new和delete的典型用法動(dòng)態(tài)分配和釋放單個(gè)數(shù)據(jù)的存儲(chǔ)區(qū)#include<iostream.h>voidmain(){ int*p;p=newint; if(p==NULL){ cout<<“Allocationfailure!\n”; }else{ *p=15; cout<<*p; deletep; }}pp152022/12/2136new和delete的典型用法動(dòng)態(tài)分配和釋放單個(gè)數(shù)據(jù)的存儲(chǔ)區(qū)用new運(yùn)算符初始化單個(gè)數(shù)據(jù)的存儲(chǔ)區(qū)語(yǔ)法為:type*p;P=newtype(初始值);……deletep;幾點(diǎn)說(shuō)明:是用小括號(hào)將初始值括起來(lái)。初始值可以是常量、變量、以及表達(dá)式。2022/12/2137用new運(yùn)算符初始化單個(gè)數(shù)據(jù)的存儲(chǔ)區(qū)語(yǔ)法為:type*p;舉例#include<iostream.h>voidmain(){ int*p;
p=newint(100); if(p==NULL){ cout<<“Allocationfailure!\n”; }else{ cout<<*p; deletep; }}//如果p=newint(98.5),會(huì)怎么樣?注意:初始值必須與相應(yīng)類型一致。p1002022/12/2138舉例#include<iostream.h>注意:初始值必動(dòng)態(tài)分配一維數(shù)組的存儲(chǔ)空間語(yǔ)法為:type*p;P=newtype[num];……delete[]p;幾點(diǎn)說(shuō)明:num用于指定數(shù)組大小,可以是常量、變量、以及表達(dá)式,并且用中括號(hào)括起來(lái)。通過(guò)p[i]的方式訪問數(shù)組元素。2022/12/2139動(dòng)態(tài)分配一維數(shù)組的存儲(chǔ)空間語(yǔ)法為:type*p;幾點(diǎn)說(shuō)明:#include<iostream.h>voidmain(){ inti,*p;
p=newint[100]; if(p==NULL){ cout<<“Allocationfailure!\n”; }else{ for(i=0;i<100;i++)
p[i]=i+1; for(i=0;i<100;i++) cout<<p[i]<<‘‘;
delete[]p; }}p1100Unit99…Unit02022/12/2140#include<iostream.h>p1100Unit幾點(diǎn)說(shuō)明:new返回的指針指向數(shù)組的起始位置,也就是數(shù)組的第一個(gè)元素。用new動(dòng)態(tài)分配一個(gè)數(shù)組時(shí)不能對(duì)它進(jìn)行初始化。(呵呵,為什么??)2022/12/2141幾點(diǎn)說(shuō)明:2022/12/1941引用Reference簡(jiǎn)單地說(shuō),引用就是給一個(gè)單元起一個(gè)別名。也就是說(shuō),引用與它所引用的變量共享存儲(chǔ)單元。引用主要有以下三種用法:獨(dú)立引用作為函數(shù)參數(shù)作為函數(shù)返回類型2022/12/2142引用Reference簡(jiǎn)單地說(shuō),引用就是給一個(gè)單元起一個(gè)別獨(dú)立引用inti=0,k=8;int&j=i;int*p=&i;j=k;0ijpj是i的引用,i和j是代表同一個(gè)單元。這種使用引用的方式稱為獨(dú)立引用。在聲明獨(dú)立引用時(shí)必須對(duì)它初始化,這種情況下的別名綁定是永久的。語(yǔ)句”j=k;”
不是試圖使j成為k的別名,而是在給j賦值,即使j的值也就是i的值等于k。2022/12/2143獨(dú)立引用inti=0,k=8;0ijpj是i的引用,i初始化獨(dú)立引用的幾種方式賦值表達(dá)式的右端是一個(gè)變量
inta; int&ra=a;賦值表達(dá)式的右端是一個(gè)常量
float&r1=1.0;//早期的C++版本 constfloat&r2=1.0;//近期C++版本定義常引用
intx=1; constint&rx=x;
rx=98;//錯(cuò)誤,只能使用rx,不能修改2022/12/2144初始化獨(dú)立引用的幾種方式賦值表達(dá)式的右端是一個(gè)變量2022/引用作為函數(shù)參數(shù)C++和C一樣,都是采用“傳值”的方式向函數(shù)傳遞參數(shù),從而使實(shí)際參數(shù)和形式參數(shù)相結(jié)合的。在這種情況下,實(shí)參和形參是兩個(gè)不同的單元,在結(jié)合時(shí),實(shí)參的值將會(huì)被拷貝到形參中。2022/12/2145引用作為函數(shù)參數(shù)C++和C一樣,都是采用“傳值”的方式向函數(shù)C++函數(shù)的傳值調(diào)用voidfunc(intnum){ num++;}voidmain(){ intvalue=5;
func(value); cout<<value;}//輸出:5value5(6)num5Stack……Copy…由于“傳值”方式的存在,因此試圖通過(guò)改變形參來(lái)改變實(shí)參的努力是不會(huì)成功的。2022/12/2146C++函數(shù)的傳值調(diào)用voidfunc(intnum)va通過(guò)傳地址來(lái)改變實(shí)參為了解決上述問題,在C語(yǔ)言中,可以通過(guò)傳遞指針的方式來(lái)完成。我們可以通過(guò)形參指針間接地改變實(shí)參。2022/12/2147通過(guò)傳地址來(lái)改變實(shí)參為了解決上述問題,在C語(yǔ)言中,可以通過(guò)傳C語(yǔ)言的傳指針調(diào)用voidfunc(int*pnum){ (*pnum)++;}voidmain(){ intvalue=5;
func(&value); cout<<value;}//輸出:6…valuevalue的地址pnum5(6)Stack……指向此時(shí)實(shí)參與形參的傳遞為:int*pnum=&value;2022/12/2148C語(yǔ)言的傳指針調(diào)用voidfunc(int*pnum){C++傳遞引用的方式C++采用了比傳遞指針更好的方式:傳遞引用。在這種情況下,形參的名字將被看作是實(shí)參的別名(同獨(dú)立引用的情況一樣),也就是說(shuō),形參就是實(shí)參本身。此時(shí)對(duì)形參的改變也就直接改變了實(shí)參。2022/12/2149C++傳遞引用的方式C++采用了比傳遞指針更好的方式:傳遞引C++語(yǔ)言的引用調(diào)用voidfunc(int&pnum){ pnum++;}voidmain(){ intvalue=5;
func(value); cout<<value;}//輸出:6…valuepnum5(6)Stack……此時(shí)實(shí)參與形參的傳遞為:int&pnum=value;2022/12/2150C++語(yǔ)言的引用調(diào)用voidfunc(int&pnum)引用作為函數(shù)的返回函數(shù)返回引用,實(shí)際上返回的是一個(gè)存儲(chǔ)單元(變量),即“左值”。因此,如果一個(gè)函數(shù)返回引用,那么函數(shù)調(diào)用可以出現(xiàn)在賦值號(hào)的左邊。這種情況在C語(yǔ)言里是見不到的。值得注意的是,因?yàn)榉祷氐囊檬且粋€(gè)存儲(chǔ)單元,所以函數(shù)返回后這個(gè)單元的生命期應(yīng)該不會(huì)結(jié)束,否則返回值將沒有意義。2022/12/2151引用作為函數(shù)的返回函數(shù)返回引用,實(shí)際上返回的是一個(gè)存儲(chǔ)單元(舉例int&f(int*pint){ return*pint;}voidmain(){ inta=10,b; b=f(&a)*5; f(&a)=88; cout<<b<<““<<a;}//輸出:50882022/12/2152舉例int&f(int*pint){2022/12/19結(jié)構(gòu)與聯(lián)合
數(shù)組是由類型相同的數(shù)據(jù)元素構(gòu)成的。然而,程序中往往需要處理一些由不同類型數(shù)據(jù)元素所構(gòu)成的數(shù)據(jù)。
例如,一個(gè)學(xué)生的基本情況由學(xué)號(hào)、姓名、性別、出生日期、成績(jī)等數(shù)據(jù)元素構(gòu)成,這些數(shù)據(jù)元素具有不同的數(shù)據(jù)類型,如果使用獨(dú)立的不同數(shù)據(jù)類型的變量來(lái)描述這些信息,那么,變量之間的關(guān)系不能體現(xiàn)出來(lái)。C++也提供了描述不同數(shù)據(jù)類型的組合體的方法:結(jié)構(gòu)和聯(lián)合。
結(jié)構(gòu)與聯(lián)合數(shù)組是由類型相同的數(shù)據(jù)元素構(gòu)成的。然結(jié)構(gòu)
結(jié)構(gòu)類型將不同數(shù)據(jù)類型組合成一個(gè)整體類型,是一種“用戶自定義構(gòu)造數(shù)據(jù)類型”。定義結(jié)構(gòu)類型的格式如下:struct結(jié)構(gòu)類型名{
數(shù)據(jù)類型1成員名1;數(shù)據(jù)類型2成員名2;
……
數(shù)據(jù)類型n成員名n;};結(jié)構(gòu)結(jié)構(gòu)類型將不同數(shù)據(jù)類型組合成一個(gè)整體類型,是一聯(lián)合
聯(lián)合類型提供了一種可以將幾種不同類型數(shù)據(jù)存放于同一段內(nèi)存,對(duì)其中各個(gè)成員可以按名存取的機(jī)制。聯(lián)合類型定義的語(yǔ)法形式為: union聯(lián)合類型名 {
數(shù)據(jù)類型1成員名1; 數(shù)據(jù)類型2成員名2;
……
數(shù)據(jù)類型n成員名n; };聯(lián)合聯(lián)合類型提供了一種可以將幾種不同類型數(shù)第五章構(gòu)造數(shù)據(jù)類型丘志杰電子科技大學(xué)計(jì)算機(jī)學(xué)院軟件學(xué)院2022/12/2156第五章構(gòu)造數(shù)據(jù)類型丘志杰2022/12/191枚舉類型
“枚舉”是指將變量所有可能的取值一一列舉出來(lái),變量的取值只限于列舉出來(lái)的常量。枚舉類型的聲明的一般形式如下:當(dāng)沒給各枚舉常量指定值時(shí),其值依次默認(rèn)為0、1、2、…;在定義枚舉類型時(shí),也可使用賦值號(hào)另行指定枚舉常量的值。
enum枚舉類型名{枚舉常量1,枚舉常量2,…,枚舉常量n};枚舉!枚舉類型“枚舉”是指將變量所有可能的取值一一列舉出來(lái),例:NeedToDo舉例
例:NeedToDo舉例數(shù)組
數(shù)組是一組在內(nèi)存中依次連續(xù)存放的、具有同一類型的數(shù)據(jù)變量所組成的集合體。數(shù)組元素用數(shù)組名與帶方括號(hào)的數(shù)組下標(biāo)一起標(biāo)識(shí)。數(shù)組數(shù)組是一組在內(nèi)存中依次連續(xù)存放的、具有同一類型的數(shù)據(jù)變一維數(shù)組定義與使用
一維數(shù)組定義的一般形式為:
數(shù)據(jù)類型數(shù)組名[常量表達(dá)式];說(shuō)明:數(shù)組元素的類型可以是void型以外的任何數(shù)據(jù)類型。數(shù)組名代表數(shù)組元素在內(nèi)存中的起始地址,是一個(gè)地址常量。一維數(shù)組定義與使用一維數(shù)組定義的一般形式為:數(shù)組定義之后,系統(tǒng)會(huì)將從內(nèi)存中為其分配一塊連續(xù)的存儲(chǔ)空間,從第1個(gè)數(shù)據(jù)元素開始依次存放各個(gè)數(shù)組元素。 例如:inta[5];數(shù)組定義之后,系統(tǒng)會(huì)將從內(nèi)存中為其分配一塊連續(xù)的存儲(chǔ)一維數(shù)組的初始化
一維數(shù)組初始化的語(yǔ)法形式為: 數(shù)據(jù)類型數(shù)組名[常量表達(dá)式]={初值1,初值2,…,初值n};例如:
intarray[3]={5,6,7};intarray2[3]={1,2};一維數(shù)組的初始化一維數(shù)組初始化的語(yǔ)法形式為:存取一維數(shù)組元素的語(yǔ)法形式為:
數(shù)組名[下標(biāo)表達(dá)式];
讀數(shù)組元素的地址通過(guò)數(shù)組名來(lái)讀取,格式如下:
數(shù)組名+整型表達(dá)式;
或
&數(shù)組名[下標(biāo)表達(dá)式];
存取一維數(shù)組元素的語(yǔ)法形式為:使用數(shù)組要注意的地方在使用數(shù)組時(shí)最常犯的錯(cuò)誤是下標(biāo)越界。數(shù)組名是一個(gè)地址常量,不能作為左值(賦值的目標(biāo))。因此,不能將一個(gè)數(shù)組整體拷貝給另外一個(gè)數(shù)組。例如:
inta[5],c[5],i;a=c; //錯(cuò)誤!
正確的方法是將對(duì)應(yīng)的元素進(jìn)行拷貝:
for(i=0;i<5;i++)a[i]=c[i];
使用數(shù)組要注意的地方在使用數(shù)組時(shí)最常犯的錯(cuò)誤是下標(biāo)越界。字符數(shù)組與字符串
存放字符型數(shù)據(jù)的數(shù)組稱為字符數(shù)組。
1.用字符進(jìn)行初始化
例如:
char
s1[]={'C','h','i','n','a'};2.用字符串進(jìn)行初始化
例如:
char
s2[]="China";字符數(shù)組與字符串存放字符型數(shù)據(jù)的數(shù)組稱為字符數(shù)組。字符數(shù)組的使用
字符數(shù)組也是數(shù)組,我們同樣可以通過(guò)數(shù)組名及下標(biāo)引用數(shù)組中的元素。為方便對(duì)字符與字符串的處理,C++提供了許多專門處理字符與字符串的函數(shù)。參看P118表5-1。字符數(shù)組的使用字符數(shù)組也是數(shù)組,我們同樣可以通過(guò)數(shù)組名及下指針指針是C++語(yǔ)言最重要特性之一,也是C++的主要難點(diǎn)。指針提供了一種較為直觀的地址操作的手段,正確地使用指針,可以方便、靈活而有效地組織和表示復(fù)雜的數(shù)據(jù)。指針指針是C++語(yǔ)言最重要特性之一,也是C++的主要難點(diǎn)。地址與指針地址:當(dāng)定義一個(gè)變量后,內(nèi)存中將會(huì)劃出一塊由若干個(gè)存儲(chǔ)單元組成的區(qū)域,用于保存該變量的數(shù)據(jù)。在內(nèi)存里每個(gè)存儲(chǔ)單元都有各自的編號(hào),稱為地址。指針:在C++中,提供了指針類型,它是一種用于存放內(nèi)存單元地址的變量類型,地址就存儲(chǔ)在這種指針類型的變量中。正因?yàn)橹羔樧兞看鎯?chǔ)的是地址,用它來(lái)指明內(nèi)存單元,所以形象地稱這種地址變量為指針。
地址與指針地址:當(dāng)定義一個(gè)變量后,內(nèi)存中將會(huì)劃出一塊由若指針變量的定義例如:
int
*ip;//定義了一個(gè)int型的指針變量ipfloat
*fp;//定義了一個(gè)float型指針變量fptypedefintA[10];A*ap;//定義了一個(gè)A類型的指針變量apsizeof(ip)=sizeof(fp)=sizeof(ap)=4;
定義指針變量的格式如下:數(shù)據(jù)類型*變量名;
指針變量的定義例如:定義指針變量的格式如下:數(shù)據(jù)類型指針的初始化與賦值(1)不要將一個(gè)非地址常量、變量以及無(wú)意義的實(shí)際地址賦給指針變量。如:
int*p=100;//int*p=(int*)100;(對(duì)嗎?)
int*p=(char*)100;(2)可以使用一個(gè)已初始化的指針去給另一個(gè)指針賦值,但類型必須一致如果不一致,可進(jìn)行強(qiáng)制類型轉(zhuǎn)換。
char*p=NULL;int*ip=(int*)p+100;
數(shù)據(jù)類型*指針變量名=初始地址表達(dá)式;
指針的初始化與賦值(1)不要將一個(gè)非地址常量、變量以及無(wú)意義(3)對(duì)于基本數(shù)據(jù)類型的變量、數(shù)組元素我們可以使用取地址運(yùn)算符&來(lái)獲得它們的地址,但是也只有類型一致才能賦值。
inta[10];//定義int型數(shù)組
int*i_pointer=a;//定義并初始化int型指針(4)有一種特殊的void類型指針,可以存儲(chǔ)任何的類型地址;但將一個(gè)void類型的地址賦值給非void類型的指針變量,要使用類型強(qiáng)制轉(zhuǎn)換。
voidv;//錯(cuò)誤,不能定義void類型的變量
void*vp;//定義void類型的指針(3)對(duì)于基本數(shù)據(jù)類型的變量、數(shù)組元素我們可以使用取地址運(yùn)算指針運(yùn)算指針通常進(jìn)行下列幾種運(yùn)算:賦值運(yùn)算、取值運(yùn)算、算術(shù)運(yùn)算、相減運(yùn)算、比較運(yùn)算。(1)*和&運(yùn)算
*:指針運(yùn)算符,&:取地址運(yùn)算符。
例如:
inta[4]={1,2,3};int*ip=&a[2];cout<<*ip;*ip=100;
指針運(yùn)算指針通常進(jìn)行下列幾種運(yùn)算:賦值運(yùn)算、取值運(yùn)算(2)指針與整數(shù)的加減運(yùn)算
指針的加減運(yùn)算與普通變量的加減運(yùn)算不同,由于指針存儲(chǔ)的是變量的內(nèi)存地址,指針加上或減去一個(gè)整數(shù)n,表示指針從當(dāng)前位置向后或向前移動(dòng)n個(gè)sizeof(數(shù)據(jù)類型)長(zhǎng)度的存儲(chǔ)單元。因此對(duì)于不同的數(shù)據(jù)類型,n的實(shí)際大小就不同。(2)指針與整數(shù)的加減運(yùn)算(3)指針自增、自減運(yùn)算
指針的自增、自減運(yùn)算是指針加減運(yùn)算的特例。指針的自增或自減表示指針從當(dāng)前位置向后或向前移動(dòng)sizeof(數(shù)據(jù)類型)長(zhǎng)度的存儲(chǔ)單元。
例如:
int*p,a=5;p=&a;p++;//指針p后移4個(gè)字節(jié)(3)指針自增、自減運(yùn)算(4)兩指針相減
當(dāng)兩個(gè)指針指向同一數(shù)組時(shí),兩個(gè)指針的相減才有意義。兩個(gè)指針相減的結(jié)果為一整數(shù),表示兩個(gè)指針之間數(shù)組元素的個(gè)數(shù)。
(5)兩個(gè)指針的比較運(yùn)算
兩個(gè)指針的比較一般用于下列兩種情況:一是比較兩個(gè)指針?biāo)赶虻膶?duì)象在內(nèi)存中的位置關(guān)系;二是判斷指針是否為空指針。
(4)兩指針相減void類型指針
指向void類型的指針是一種不確定類型的指針,它可以指向任何類型的變量。實(shí)際使用void型指針時(shí),只有通過(guò)強(qiáng)制類型轉(zhuǎn)換才能使void型指針得到具體變量的值。在沒有轉(zhuǎn)換前void型指針不能進(jìn)行指針的算術(shù)運(yùn)算。例如:
void
*vp;//定義了一個(gè)void型指針vp
int
i=6,*ip;
vp=&i;//vp指向整型變量icout<<“i=”<<*vp<<endl;//錯(cuò)誤
cout<<"i="<<*(int
*)p<<endl;ip=(int
*)vp;//ip指向vp指向的變量i
cout<<"i="<<*ip<<endl;void類型指針指向void類型的指針是一種不確定指針與字符串
字符型指針:
用于存放字符型變量的地址,而字符串的本質(zhì)是以\0結(jié)尾的字符數(shù)組,一個(gè)字符型指針存儲(chǔ)了字符數(shù)組的第一個(gè)元素的地址,也就存儲(chǔ)了字符串的地址,這個(gè)指針就指向了字符串。在定義一個(gè)字符數(shù)組時(shí),可以將一個(gè)字符串常量作為初值,但將字符串常量作為初值賦給字符數(shù)組和將字符串常量作為初值賦給字符指針變量,二者的含義是不同的。例如:
charstr[5]="abcd";char*p_str="abcd";指針與字符串字符型指針:指針與數(shù)組
1使用指針操作符*存取數(shù)組指針的加減運(yùn)算的特點(diǎn)使得指針操作符特別適合處理存儲(chǔ)在一段連續(xù)內(nèi)存空間中的同類型數(shù)據(jù)。這樣,使用指針操作符來(lái)對(duì)數(shù)組及其元素進(jìn)行操作就非常方便。(1)一維數(shù)組的指針操作
當(dāng)定義數(shù)組一維數(shù)組Ta[N](T為類型),下式為存取數(shù)組元素a[i]的等效方式:*(a+i);而a+i為a[i]的地址。指針與數(shù)組1使用指針操作符*存取數(shù)組數(shù)組指針
數(shù)組指針是指向數(shù)組的指針。例如:int
(*a_p)[5];等效于下列定義方式:①typedefintI_A[5];②I_A*a_p;數(shù)組指針數(shù)組與函數(shù)
數(shù)組名是一個(gè)地址,不能當(dāng)作一個(gè)左值,但是可以作為函數(shù)的形參,接受實(shí)參傳送來(lái)的地址。當(dāng)形參接受實(shí)參傳送來(lái)的地址后,形參數(shù)組與實(shí)參共享內(nèi)存中的一塊空間。函數(shù)體通過(guò)形參對(duì)數(shù)組內(nèi)容的改變會(huì)直接作用到實(shí)參上。數(shù)組名作為形參是數(shù)組應(yīng)用的一個(gè)重要方面。
數(shù)組與函數(shù)數(shù)組名是一個(gè)地址,不能當(dāng)舉例
voidfunc(inta[],intn){ inti; for(i=0;i<n;i++) a[i]+=3;}voidmain(){ inta[]={1,2,3,4}; func(a,4); }
舉例voidfunc(inta[],intn)指向函數(shù)的指針
在程序運(yùn)行時(shí),不僅數(shù)據(jù)要占用內(nèi)存空間,程序的代碼也被調(diào)入內(nèi)存并占據(jù)一定的內(nèi)存空間。每一個(gè)函數(shù)都有函數(shù)名,實(shí)際上,這個(gè)函數(shù)名就是該函數(shù)的代碼在內(nèi)存的起始地址。
當(dāng)調(diào)用一個(gè)函數(shù)時(shí),編譯系統(tǒng)就是根據(jù)函數(shù)名找到函數(shù)代碼的首地址,從而執(zhí)行這段代碼。由此看來(lái),函數(shù)的調(diào)用形式:函數(shù)名(參數(shù)表),其實(shí)質(zhì)就是:函數(shù)代碼首地址(參數(shù)表)。函數(shù)指針:
就是指向某個(gè)函數(shù)的指針,它是專門用于存放該函數(shù)代碼首地址的指針變量。一旦定義了某個(gè)函數(shù)指針,那么,它就與函數(shù)名有同樣的作用,在程序中就可以象使用函數(shù)名一樣,通過(guò)指向該函數(shù)的指針來(lái)調(diào)用該函數(shù)。指向函數(shù)的指針在程序運(yùn)行時(shí),不僅數(shù)據(jù)要占用內(nèi)函數(shù)指針的定義語(yǔ)法形式如下:其中:數(shù)據(jù)類型為函數(shù)指針?biāo)负瘮?shù)的返回值類型;形參表則列出了該指針?biāo)负瘮?shù)的形參類型和個(gè)數(shù)。函數(shù)指針名與*外面的圓括號(hào)()是必須的,如果去掉圓括號(hào),將被解釋為函數(shù)的返回值為指針。
數(shù)據(jù)類型(*函數(shù)指針名)(形參表);
函數(shù)指針的定義語(yǔ)法形式如下:數(shù)據(jù)類型(*函數(shù)指針名)(形
函數(shù)指針在使用之前也要進(jìn)行賦值,使指針指向一個(gè)已經(jīng)存在的函數(shù)代碼的起始地址。語(yǔ)法形式為:
函數(shù)指針名=函數(shù)名;
調(diào)用函數(shù)指針指向的函數(shù)有如下兩種格式:
①函數(shù)指針名(實(shí)參表); ②(*函數(shù)指針名)(實(shí)參表);
例如:
intadd(inta,intb);//定義函數(shù)
int(*fptr)(inta,intb);//定義函數(shù)指針
fptr=add;//函數(shù)指針賦值函數(shù)指針在使用之前也要進(jìn)行賦值,使指針指向一個(gè)已經(jīng)存在的采用下列任何一種形式調(diào)用函數(shù)add:
add(1,2);
(*fptr)(1,2);
fptr(1,2);說(shuō)明:雖然三種調(diào)用形式的結(jié)果完全相同,當(dāng)用指向函數(shù)的指針調(diào)用函數(shù)add()時(shí),習(xí)慣上使用
(*fptr)(1,2),因?yàn)檫@種形式能更直觀地說(shuō)明是用指向函數(shù)的指針來(lái)調(diào)用函數(shù)。采用下列任何一種形式調(diào)用函數(shù)add:說(shuō)明:多重指針
如果已經(jīng)定義了一個(gè)指針類型,我們?cè)俣x一個(gè)指針,用于指向已經(jīng)定義的指針變量,后面定義的指針變量就是一個(gè)指向指針的指針變量,簡(jiǎn)稱指向指針的指針,這樣的指針也稱二重(級(jí))指針。三重及以上的指針統(tǒng)稱為多重指針。例如:
int**pp;
定義了一個(gè)二級(jí)指針變量,等效于下列定義方式:
typedefint*P;P*p;
例:inta,*p,**pp;p=&a;pp=&p; 多重指針如果已經(jīng)定義了一個(gè)指針類型,我們?cè)俣▌?dòng)態(tài)存儲(chǔ)分配和釋放存儲(chǔ)空間C的做法 void* malloc(size_tsize); void free(void*pMemory);例如: char*p=(char*)malloc(100); strcpy(p,”HelloWorld!”); free(p);注意:這里是以字節(jié)計(jì)算的單元數(shù)目2022/12/2187動(dòng)態(tài)存儲(chǔ)分配和釋放存儲(chǔ)空間C的做法注意:這里是以字節(jié)計(jì)算的單C++的做法使用運(yùn)算符new和delete使用形式
type是一個(gè)數(shù)據(jù)類型名,p是該類型的指針變量,new的作用就是從堆空間中分配一塊與type類型的數(shù)據(jù)一樣大小的內(nèi)存(如果分配失敗,new返回一個(gè)空指針),該內(nèi)存地址被存于指針p中。一旦不想再使用,可以用delete來(lái)釋放該內(nèi)存空間。type*p;p=newtype;deletep;2022/12/2188C++的做法使用運(yùn)算符new和deletetype是一舉例int*p;p=newint;*p=50;deletep;2022/12/2189舉例int*p;2022/12/1934幾點(diǎn)注意使用new申請(qǐng)的內(nèi)存空間是沒有名字的,只能通過(guò)指針間接訪問它們。用delete釋放的內(nèi)存空間必須是由new分配的空間,否則執(zhí)行delete時(shí)將會(huì)導(dǎo)致嚴(yán)重的錯(cuò)誤。例如:int*p;deletep;//出錯(cuò)int*p,value;p=&value;deletep;//出錯(cuò)2022/12/2190幾點(diǎn)注意使用new申請(qǐng)的內(nèi)存空間是沒有名字的,只能通過(guò)指針間new和delete的典型用法動(dòng)態(tài)分配和釋放單個(gè)數(shù)據(jù)的存儲(chǔ)區(qū)#include<iostream.h>voidmain(){ int*p;p=newint; if(p==NULL){ cout<<“Allocationfailure!\n”; }else{ *p=15; cout<<*p; deletep; }}pp152022/12/2191new和delete的典型用法動(dòng)態(tài)分配和釋放單個(gè)數(shù)據(jù)的存儲(chǔ)區(qū)用new運(yùn)算符初始化單個(gè)數(shù)據(jù)的存儲(chǔ)區(qū)語(yǔ)法為:type*p;P=newtype(初始值);……deletep;幾點(diǎn)說(shuō)明:是用小括號(hào)將初始值括起來(lái)。初始值可以是常量、變量、以及表達(dá)式。2022/12/2192用new運(yùn)算符初始化單個(gè)數(shù)據(jù)的存儲(chǔ)區(qū)語(yǔ)法為:type*p;舉例#include<iostream.h>voidmain(){ int*p;
p=newint(100); if(p==NULL){ cout<<“Allocationfailure!\n”; }else{ cout<<*p; deletep; }}//如果p=newint(98.5),會(huì)怎么樣?注意:初始值必須與相應(yīng)類型一致。p1002022/12/2193舉例#include<iostream.h>注意:初始值必動(dòng)態(tài)分配一維數(shù)組的存儲(chǔ)空間語(yǔ)法為:type*p;P=newtype[num];……delete[]p;幾點(diǎn)說(shuō)明:num用于指定數(shù)組大小,可以是常量、變量、以及表達(dá)式,并且用中括號(hào)括起來(lái)。通過(guò)p[i]的方式訪問數(shù)組元素。2022/12/2194動(dòng)態(tài)分配一維數(shù)組的存儲(chǔ)空間語(yǔ)法為:type*p;幾點(diǎn)說(shuō)明:#include<iostream.h>voidmain(){ inti,*p;
p=newint[100]; if(p==NULL){ cout<<“Allocationfailure!\n”; }else{ for(i=0;i<100;i++)
p[i]=i+1; for(i=0;i<100;i++) cout<<p[i]<<‘‘;
delete[]p; }}p1100Unit99…Unit02022/12/2195#include<iostream.h>p1100Unit幾點(diǎn)說(shuō)明:new返回的指針指向數(shù)組的起始位置,也就是數(shù)組的第一個(gè)元素。用new動(dòng)態(tài)分配一個(gè)數(shù)組時(shí)不能對(duì)它進(jìn)行初始化。(呵呵,為什么??)2022/12/2196幾點(diǎn)說(shuō)明:2022/12/1941引用Reference簡(jiǎn)單地說(shuō),引用就是給一個(gè)單元起一個(gè)別名。也就是說(shuō),引用與它所引用的變量共享存儲(chǔ)單元。引用主要有以下三種用法:獨(dú)立引用作為函數(shù)參數(shù)作為函數(shù)返回類型2022/12/2197引用Reference簡(jiǎn)單地說(shuō),引用就是給一個(gè)單元起一個(gè)別獨(dú)立引用inti=0,k=8;int&j=i;int*p=&i;j=k;0ijpj是i的引用,i和j是代表同一個(gè)單元。這種使用引用的方式稱為獨(dú)立引用。在聲明獨(dú)立引用時(shí)必須對(duì)它初始化,這種情況下的別名綁定是永久的。語(yǔ)句”j=k;”
不是試圖使j成為k的別名,而是在給j賦值,即使j的值也就是i的值等于k。2022/12/2198獨(dú)立引用inti=0,k=8;0ijpj是i的引用,i初始化獨(dú)立引用的幾種方式賦值表達(dá)式的右端是一個(gè)變量
inta; int&ra=a;賦值表達(dá)式的右端是一個(gè)常量
float&r1=1.0;//早期的C++版本 constfloat&r2=1.0;//近期C++版本定義常引用
intx=1; constint&rx=x;
rx=98;//錯(cuò)誤,只能使用rx,不能修改2022/12/2199初始化獨(dú)立引用的幾種方式賦值表達(dá)式的右端是一個(gè)變量2022/引用作為函數(shù)參數(shù)C++和C一樣,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川省瀘州市瀘縣五中2024-2025學(xué)年高一(上)期末生物試卷(含答案)
- 習(xí)作:我的家人 說(shuō)課稿-2024-2025學(xué)年語(yǔ)文四年級(jí)上冊(cè)統(tǒng)編版
- 鉬產(chǎn)品深加工技術(shù)改造產(chǎn)能提升項(xiàng)目可行性研究報(bào)告寫作模板-申批備案
- 廣西壯族自治區(qū)南寧市2024-2025學(xué)年八年級(jí)上學(xué)期期末生物試題(無(wú)答案)
- 安徽省淮北市和淮南市2025屆高三第一次質(zhì)量檢測(cè)歷史試卷(含答案)
- 陜西省寶雞市(2024年-2025年小學(xué)六年級(jí)語(yǔ)文)部編版期中考試((上下)學(xué)期)試卷及答案
- Unit 2 Making a Difference Developing ideas The power of good 說(shuō)課稿-2023-2024學(xué)年高一英語(yǔ)外研版(2019)必修第三冊(cè)
- Unit 1 developing the topic-Oral communication 說(shuō)課稿 2024-2025學(xué)年仁愛科普版(2024)七年級(jí)英語(yǔ)上冊(cè)
- 貴州黔南經(jīng)濟(jì)學(xué)院《數(shù)據(jù)結(jié)構(gòu)Ⅰ》2023-2024學(xué)年第一學(xué)期期末試卷
- 新疆塔城地區(qū)(2024年-2025年小學(xué)六年級(jí)語(yǔ)文)統(tǒng)編版綜合練習(xí)((上下)學(xué)期)試卷及答案
- 2019年海南省公務(wù)員考試申論真題(甲類)
- 事業(yè)部制改革方案
- 2025屆廣東省揭陽(yáng)市高一生物第一學(xué)期期末統(tǒng)考模擬試題含解析
- CSR報(bào)告與可持續(xù)發(fā)展
- 蘇教版五年級(jí)上冊(cè)小數(shù)混合運(yùn)算300道及答案
- 第一章問題解決策略:分類討論 教案 2024-2025學(xué)年 魯教版(五四制)六年級(jí)數(shù)學(xué)上冊(cè)
- 期末復(fù)習(xí)知識(shí)點(diǎn)-2024-2025學(xué)年統(tǒng)編版道德與法治九年級(jí)上冊(cè)
- 職業(yè)技術(shù)學(xué)?!犊缇畴娮由虅?wù)物流與倉(cāng)儲(chǔ)》課程標(biāo)準(zhǔn)
- 2024年小學(xué)語(yǔ)文名師工作室年度工作總結(jié)
- 2024時(shí)事政治考試題庫(kù)附參考答案(黃金題型)
- 中華人民共和國(guó)勞動(dòng)合同法全文下載
評(píng)論
0/150
提交評(píng)論