版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章復(fù)雜數(shù)據(jù)類型第7章復(fù)雜數(shù)據(jù)類型17.1結(jié)構(gòu)體將不同種類型的數(shù)據(jù)有序地組合在一起,構(gòu)造出一個(gè)新的數(shù)據(jù)類型,這種形式稱為結(jié)構(gòu)體。結(jié)構(gòu)體是多種類型組合的數(shù)據(jù)類型。7.1結(jié)構(gòu)體將不同種類型的數(shù)據(jù)有序地組合在一起,構(gòu)造出一個(gè)新2struct結(jié)構(gòu)體名{成員列表};structstudent{intnum;charname[20];charsex;charaddr[30];};結(jié)構(gòu)體名關(guān)鍵字不同數(shù)據(jù)類型組成的成員分號(hào)不能少struct結(jié)構(gòu)體名structstud3定義結(jié)構(gòu)體類型變量的方法一、先定義結(jié)構(gòu)體類型再定義變量名structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};structstudent
student1,student2;結(jié)構(gòu)體類型名變量1變量2結(jié)構(gòu)體類型只是一種數(shù)據(jù)類型,不占內(nèi)存空間,只有定義結(jié)構(gòu)體類型變量時(shí)才開辟內(nèi)存空間。定義結(jié)構(gòu)體類型變量的方法一、先定義結(jié)構(gòu)體類型再定義變量名st4#defineSTUDENT
structstudent
STUDENT{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};
STUDENTstudent1,student2;凡是STUDENT的地方都用structstudent機(jī)械替換。#defineSTUDENTstructst5二、在定義類型的同時(shí)定義變量structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}student1,student2;struct結(jié)構(gòu)體名{成員列表}變量名列表;緊接著定義變量二、在定義類型的同時(shí)定義變量structstudent6三、直接定義結(jié)構(gòu)體類型變量struct{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}student1,student2;struct{成員列表}變量名列表;不出現(xiàn)結(jié)構(gòu)體名。三、直接定義結(jié)構(gòu)體類型變量structstruct不出現(xiàn)72、在編譯時(shí),僅對(duì)變量分配空間,不對(duì)類型分配空間。1、結(jié)構(gòu)體類型的變量在內(nèi)存依照其成員的順序順序排列,所占內(nèi)存空間的大小是其全體成員所占空間的總和。3、對(duì)結(jié)構(gòu)體中各個(gè)成員可以單獨(dú)引用、賦值,其作用與變量等同。格式:變量名.成員名student1.num說明:2、在編譯時(shí),僅對(duì)變量分配空間,不對(duì)類型分配空間。1、結(jié)構(gòu)體84、結(jié)構(gòu)體的成員可以是另一個(gè)結(jié)構(gòu)體類型。structdate{intmonth;intday;intyear;};structstudent{intnum;charname[20];
structdate
birthday;};成員類型成員名5、成員名可以與程序中的變量名相同,二者分占不同的內(nèi)存單元,互不干擾。例如,在程序中仍可以定義變量intnum;4、結(jié)構(gòu)體的成員可以是另一個(gè)結(jié)構(gòu)體類型。structda9結(jié)構(gòu)體類型變量的引用1、不能對(duì)結(jié)構(gòu)體變量整體賦值或輸出,只能分別對(duì)各個(gè)成員引用。cin>>student1;cin>>student1.num;student1.num=100;可以將一個(gè)結(jié)構(gòu)體變量整體賦給另外一個(gè)相同類型的結(jié)構(gòu)體變量。student2=student1;2、嵌套的結(jié)構(gòu)體變量必須逐層引用。student1.birthday.day=25;3、結(jié)構(gòu)體變量中的成員可以同一般變量一樣進(jìn)行運(yùn)算。student1.birthday.day++;student1.score+=60;錯(cuò)誤必須用成員名引用結(jié)構(gòu)體類型變量的引用1、不能對(duì)結(jié)構(gòu)體變量整體賦值或輸出,只能10對(duì)局部變量類型的結(jié)構(gòu)體變量初始化voidmain(void){structstudent{longintnum;charname[20];charsex;charaddr[30];}student1={901031,“LiLin”,‘M’,“123BeijingRoad”}; cout<<<<endl;輸出:LiLin對(duì)變量初始化,一一賦值對(duì)局部變量類型的結(jié)構(gòu)體變量初始化voidmain(void11關(guān)于結(jié)構(gòu)類型變量的使用,說明以下幾點(diǎn):1、同類型的結(jié)構(gòu)體變量之間可以直接賦值。這種賦值等同于各個(gè)成員的依次賦值。2、結(jié)構(gòu)體變量不能直接進(jìn)行輸入輸出,它的每一個(gè)成員能否直接進(jìn)行輸入輸出,取決于其成員的類型,若是基本類型或是字符數(shù)組,則可以直接輸入輸出。3、結(jié)構(gòu)體變量可以作為函數(shù)的參數(shù),函數(shù)也可以返回結(jié)構(gòu)體的值。當(dāng)函數(shù)的形參與實(shí)參為結(jié)構(gòu)體類型的變量時(shí),這種結(jié)合方式屬于值調(diào)用方式,即屬于值傳遞。(舉例說明)關(guān)于結(jié)構(gòu)類型變量的使用,說明以下幾點(diǎn):12結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組中的每個(gè)元素都是一個(gè)結(jié)構(gòu)體類型的變量,其中包括該類型的各個(gè)成員。數(shù)組各元素在內(nèi)存中連續(xù)存放。結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組中的每個(gè)元素都是一個(gè)結(jié)構(gòu)體類型的變量,其13一、結(jié)構(gòu)體數(shù)組的定義structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};structstudentstu[30];structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}stu[30];直接定義一、結(jié)構(gòu)體數(shù)組的定義structstudentstru14二、結(jié)構(gòu)體數(shù)組的初始化structstudent{intnum;charname[20];charsex;}stu[3]={{1011,"LiLin",'M'},{1012,"WangLan",'F'},{1013,"LiuFang",'F'}};二、結(jié)構(gòu)體數(shù)組的初始化structstudent15structstudent{intnum;charname[20];charsex;}stu[]={{1011,"LiLin",'M'},{1012,"WangLan",'F'},{1013,"LiuFang",'F'}};structstudent16以下程序的結(jié)果是:voidmain(void){structdate{intyear,month,day;}today;cout<<sizeof(structdate)<<endl;}12以下程序的結(jié)果是:voidmain(void)1217根據(jù)下面的定義,能打印出字母M的語句是:structperson{charname[9];intage;};structpersonclass[10]={“Jone”,17,
“Paul”,19,“Mary”,18,“Adam”,16};cout<<class[3].name<<endl;cout<<class[3].name[1]<<endl;cout<<class[2].name[1]<<endl;cout<<class[2].name[0]<<endl;輸出:Adam輸出:d輸出:a輸出:M根據(jù)下面的定義,能打印出字母M的語句是:structpe18結(jié)構(gòu)體類型的靜態(tài)成員當(dāng)把結(jié)構(gòu)體類型中的某一個(gè)成員的存儲(chǔ)類型定義為靜態(tài)時(shí),表示在這種結(jié)構(gòu)類型的所有變量中,編譯程序?yàn)檫@個(gè)成員只分配一個(gè)存儲(chǔ)空間,即這種結(jié)構(gòu)體類型的所有變量共同使用這個(gè)成員的存儲(chǔ)空間。<類型><結(jié)構(gòu)體類型名>::<靜態(tài)成員名>;其中類型要與在結(jié)構(gòu)體中定義該成員的類型一致,結(jié)構(gòu)體類型名指明靜態(tài)成員屬于哪一個(gè)結(jié)構(gòu)體。structs{staticintid;inteng;};ints::id=50; 這時(shí),未定義結(jié)構(gòu)體變量,但已將靜態(tài)成員的空間安排好。數(shù)據(jù)類型結(jié)構(gòu)體類型若有定義:ss1,s2;則變量s1,s2的id成員占用同一存儲(chǔ)空間(靜態(tài)區(qū))。結(jié)構(gòu)體類型的靜態(tài)成員當(dāng)把結(jié)構(gòu)體類型中的某一個(gè)成員的存儲(chǔ)類型19在結(jié)構(gòu)體中說明的靜態(tài)成員屬于引用性說明,必須在文件作用域中的某一個(gè)地方對(duì)靜態(tài)的成員進(jìn)行定義性說明,且僅能說明一次。ints::id;說明id的初值為0(靜態(tài)變量的缺省初值均為0)在結(jié)構(gòu)體中說明的靜態(tài)成員屬于引用性說明,必須在文件作用域中的20結(jié)構(gòu)體指針結(jié)構(gòu)體指針定義的一般形式為:struct結(jié)構(gòu)體類型*結(jié)構(gòu)體指針名;使用結(jié)構(gòu)體指針之前,必須通過賦值運(yùn)算把相應(yīng)的結(jié)構(gòu)體變量的首地址賦給結(jié)構(gòu)體指針;結(jié)構(gòu)體指針結(jié)構(gòu)體指針定義的一般形式為:21對(duì)于結(jié)構(gòu)成員的引用有以下三種等效的方式:結(jié)構(gòu)體變量.成員名(*結(jié)構(gòu)體指針).成員名結(jié)構(gòu)體指針→成員名對(duì)于結(jié)構(gòu)成員的引用有以下三種等效的方式:結(jié)構(gòu)體變量.成員名22結(jié)構(gòu)體和函數(shù)結(jié)構(gòu)體變量作為參數(shù)結(jié)構(gòu)體的首地址作為參數(shù)結(jié)構(gòu)體和函數(shù)結(jié)構(gòu)體變量作為參數(shù)23結(jié)構(gòu)體型函數(shù)和結(jié)構(gòu)體指針型函數(shù)結(jié)構(gòu)體型函數(shù):函數(shù)的返回值是結(jié)構(gòu)體變量,格式:struct結(jié)構(gòu)體類型函數(shù)名();結(jié)構(gòu)體指針型函數(shù):函數(shù)的返回值是地址,格式:struct結(jié)構(gòu)體類型*結(jié)構(gòu)體指針型函數(shù)名();結(jié)構(gòu)體型函數(shù)和結(jié)構(gòu)體指針型函數(shù)結(jié)構(gòu)體型函數(shù):函數(shù)的返回值是結(jié)247.2共用體C++語言中,允許不同的數(shù)據(jù)類型使用同一存儲(chǔ)區(qū)域,即同一存儲(chǔ)區(qū)域由不同類型的變量共同表示。這種數(shù)據(jù)類型就是共用體。union共用體名{成員表列;}變量表列;uniondata{inti;charch;floatf;}a,b,c;uniondataa,b,c;這幾個(gè)成員在共用體變量中存放在同一地址,相互覆蓋,其長(zhǎng)度為最長(zhǎng)的成員的長(zhǎng)度。7.2共用體C++語言中,允許不同的數(shù)據(jù)類型25共用體變量的引用不能整體引用共用體變量,只能引用變量中的成員。a.i表示為整型a.ch表示為字符型a.f表示為符點(diǎn)型共用體變量的引用不能整體引用共用體變量,只能引用變量中的成員26共用體變量的特點(diǎn)1、共用體的空間在某一時(shí)刻只有一個(gè)成員在起作用。2、共用體變量中的成員是最后一次放入的成員。3、共用體變量不能在定義時(shí)賦初值。4、共用體變量不能作為函數(shù)的參數(shù)或函數(shù)值,但可使用指向共用體的指針變量。5、共用體可以作為結(jié)構(gòu)的成員,結(jié)構(gòu)體也可以作為共用體的成員。共用體變量的特點(diǎn)1、共用體的空間在某一時(shí)刻只有一個(gè)成員在起作27unionun{inti;doubley;};structst{chara[10];unionunb;};cout<<sizeof(structst)<<endl;18unionun1828unionun{shortinta;charc[2];}w;w.c[0]=‘A’;w.c[1]=‘a(chǎn)’;cout<<oct<<w.a<<endl;低字節(jié)低地址高字節(jié)高地址‘a(chǎn)’‘A’w.c[1]w.c[0]2000H2001H輸出:0605010110000101000001aunionun低字節(jié)低地址‘a(chǎn)’‘A’w.c[1]w29voidmain(void){unionEXAMPLE{struct{intx,inty;}in;inta,b;}e;e.a=1;e.b=2;e.in.x=e.a*e.a;e.in.y=e.b+e.b;cout<<e.in.x<<‘\t’<<e.in.y<<endl;}inxyabb1248輸出:48voidmain(void)inxyabb1248輸出:4307.3枚舉類型如果一個(gè)變量只有幾種可能的值,可以定義為枚舉類型。枚舉類型就是將變量的值一一列舉出來,變量的值僅限于列舉出來的值的范圍內(nèi)。7.3枚舉類型如果一個(gè)變量只有幾種可能的31枚舉類型的說明:enum枚舉類型名{枚舉常量1[=整型常量],…枚舉常量N[=整型常量]};枚舉變量的定義:enum枚舉類型名枚舉變量名,…;
枚舉類型的說明:enum枚舉類型名枚舉變量的定義:enu32enumweekday{sun,mon,tue,wed,thu,fri,sat};enumweekdayworkday,weekend;workday和weekend值只能是sun到sat其中之一。enum{sun,mon,tue,wed,thu,fri,sat}workday,weekend;其中sun,mon,....,sat稱為枚舉元素或枚舉常量,為用戶定義的標(biāo)識(shí)符,所代表的意義由用戶決定,在程序中體現(xiàn)出來。數(shù)據(jù)類型可能取的值變量另一種定義變量的方法enumweekday{sun,mon,tue,331、枚舉元素為常量,不可賦值運(yùn)算。sun=0;mon=1;2、在定義枚舉類型的同時(shí),編譯程序按順序給每個(gè)枚舉元素一個(gè)對(duì)應(yīng)的序號(hào),序號(hào)從0開始,后續(xù)元素依次加1。enumweekday{sun,mon,tue,wed,thu,fri,sat};0,1,2,3,4,5,63、可以在定義時(shí)人為指定枚舉元素的序號(hào)值。enumweekday{sun=9,mon=2,tue,wed,thu,fri,sat};9,2,3,4,5,6,74、只能給枚舉變量賦枚舉值,若賦序號(hào)值必須進(jìn)行強(qiáng)制類型轉(zhuǎn)換。day=mon;day=1;day=(enumweekday)1;1、枚舉元素為常量,不可賦值運(yùn)算。sun=0;mon345、枚舉元素可以用來進(jìn)行比較判斷。if(workday==mon)if(workday>sun)6、枚舉值可以進(jìn)行加減一個(gè)整數(shù)n的運(yùn)算,得到其前后第n個(gè)元素的值。workday=sun;workday=(week)(workday+2);workday==tue7、枚舉值可以按整型輸出其序號(hào)值。workday=tue;cout<<workday;25、枚舉元素可以用來進(jìn)行比較判斷。if(workday=35voidmain(void){enumteam{qiaut,cubs=4,pick,dodger=qiaut-2;};cout<<qiaut<<‘\t’<<cubs<<‘\t’;cout<<pick<<‘\t’<<dodger<<endl;}輸出:045-2voidmain(void)輸出:045-236第7章復(fù)雜數(shù)據(jù)類型第7章復(fù)雜數(shù)據(jù)類型377.1結(jié)構(gòu)體將不同種類型的數(shù)據(jù)有序地組合在一起,構(gòu)造出一個(gè)新的數(shù)據(jù)類型,這種形式稱為結(jié)構(gòu)體。結(jié)構(gòu)體是多種類型組合的數(shù)據(jù)類型。7.1結(jié)構(gòu)體將不同種類型的數(shù)據(jù)有序地組合在一起,構(gòu)造出一個(gè)新38struct結(jié)構(gòu)體名{成員列表};structstudent{intnum;charname[20];charsex;charaddr[30];};結(jié)構(gòu)體名關(guān)鍵字不同數(shù)據(jù)類型組成的成員分號(hào)不能少struct結(jié)構(gòu)體名structstud39定義結(jié)構(gòu)體類型變量的方法一、先定義結(jié)構(gòu)體類型再定義變量名structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};structstudent
student1,student2;結(jié)構(gòu)體類型名變量1變量2結(jié)構(gòu)體類型只是一種數(shù)據(jù)類型,不占內(nèi)存空間,只有定義結(jié)構(gòu)體類型變量時(shí)才開辟內(nèi)存空間。定義結(jié)構(gòu)體類型變量的方法一、先定義結(jié)構(gòu)體類型再定義變量名st40#defineSTUDENT
structstudent
STUDENT{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};
STUDENTstudent1,student2;凡是STUDENT的地方都用structstudent機(jī)械替換。#defineSTUDENTstructst41二、在定義類型的同時(shí)定義變量structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}student1,student2;struct結(jié)構(gòu)體名{成員列表}變量名列表;緊接著定義變量二、在定義類型的同時(shí)定義變量structstudent42三、直接定義結(jié)構(gòu)體類型變量struct{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}student1,student2;struct{成員列表}變量名列表;不出現(xiàn)結(jié)構(gòu)體名。三、直接定義結(jié)構(gòu)體類型變量structstruct不出現(xiàn)432、在編譯時(shí),僅對(duì)變量分配空間,不對(duì)類型分配空間。1、結(jié)構(gòu)體類型的變量在內(nèi)存依照其成員的順序順序排列,所占內(nèi)存空間的大小是其全體成員所占空間的總和。3、對(duì)結(jié)構(gòu)體中各個(gè)成員可以單獨(dú)引用、賦值,其作用與變量等同。格式:變量名.成員名student1.num說明:2、在編譯時(shí),僅對(duì)變量分配空間,不對(duì)類型分配空間。1、結(jié)構(gòu)體444、結(jié)構(gòu)體的成員可以是另一個(gè)結(jié)構(gòu)體類型。structdate{intmonth;intday;intyear;};structstudent{intnum;charname[20];
structdate
birthday;};成員類型成員名5、成員名可以與程序中的變量名相同,二者分占不同的內(nèi)存單元,互不干擾。例如,在程序中仍可以定義變量intnum;4、結(jié)構(gòu)體的成員可以是另一個(gè)結(jié)構(gòu)體類型。structda45結(jié)構(gòu)體類型變量的引用1、不能對(duì)結(jié)構(gòu)體變量整體賦值或輸出,只能分別對(duì)各個(gè)成員引用。cin>>student1;cin>>student1.num;student1.num=100;可以將一個(gè)結(jié)構(gòu)體變量整體賦給另外一個(gè)相同類型的結(jié)構(gòu)體變量。student2=student1;2、嵌套的結(jié)構(gòu)體變量必須逐層引用。student1.birthday.day=25;3、結(jié)構(gòu)體變量中的成員可以同一般變量一樣進(jìn)行運(yùn)算。student1.birthday.day++;student1.score+=60;錯(cuò)誤必須用成員名引用結(jié)構(gòu)體類型變量的引用1、不能對(duì)結(jié)構(gòu)體變量整體賦值或輸出,只能46對(duì)局部變量類型的結(jié)構(gòu)體變量初始化voidmain(void){structstudent{longintnum;charname[20];charsex;charaddr[30];}student1={901031,“LiLin”,‘M’,“123BeijingRoad”}; cout<<<<endl;輸出:LiLin對(duì)變量初始化,一一賦值對(duì)局部變量類型的結(jié)構(gòu)體變量初始化voidmain(void47關(guān)于結(jié)構(gòu)類型變量的使用,說明以下幾點(diǎn):1、同類型的結(jié)構(gòu)體變量之間可以直接賦值。這種賦值等同于各個(gè)成員的依次賦值。2、結(jié)構(gòu)體變量不能直接進(jìn)行輸入輸出,它的每一個(gè)成員能否直接進(jìn)行輸入輸出,取決于其成員的類型,若是基本類型或是字符數(shù)組,則可以直接輸入輸出。3、結(jié)構(gòu)體變量可以作為函數(shù)的參數(shù),函數(shù)也可以返回結(jié)構(gòu)體的值。當(dāng)函數(shù)的形參與實(shí)參為結(jié)構(gòu)體類型的變量時(shí),這種結(jié)合方式屬于值調(diào)用方式,即屬于值傳遞。(舉例說明)關(guān)于結(jié)構(gòu)類型變量的使用,說明以下幾點(diǎn):48結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組中的每個(gè)元素都是一個(gè)結(jié)構(gòu)體類型的變量,其中包括該類型的各個(gè)成員。數(shù)組各元素在內(nèi)存中連續(xù)存放。結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組中的每個(gè)元素都是一個(gè)結(jié)構(gòu)體類型的變量,其49一、結(jié)構(gòu)體數(shù)組的定義structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};structstudentstu[30];structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}stu[30];直接定義一、結(jié)構(gòu)體數(shù)組的定義structstudentstru50二、結(jié)構(gòu)體數(shù)組的初始化structstudent{intnum;charname[20];charsex;}stu[3]={{1011,"LiLin",'M'},{1012,"WangLan",'F'},{1013,"LiuFang",'F'}};二、結(jié)構(gòu)體數(shù)組的初始化structstudent51structstudent{intnum;charname[20];charsex;}stu[]={{1011,"LiLin",'M'},{1012,"WangLan",'F'},{1013,"LiuFang",'F'}};structstudent52以下程序的結(jié)果是:voidmain(void){structdate{intyear,month,day;}today;cout<<sizeof(structdate)<<endl;}12以下程序的結(jié)果是:voidmain(void)1253根據(jù)下面的定義,能打印出字母M的語句是:structperson{charname[9];intage;};structpersonclass[10]={“Jone”,17,
“Paul”,19,“Mary”,18,“Adam”,16};cout<<class[3].name<<endl;cout<<class[3].name[1]<<endl;cout<<class[2].name[1]<<endl;cout<<class[2].name[0]<<endl;輸出:Adam輸出:d輸出:a輸出:M根據(jù)下面的定義,能打印出字母M的語句是:structpe54結(jié)構(gòu)體類型的靜態(tài)成員當(dāng)把結(jié)構(gòu)體類型中的某一個(gè)成員的存儲(chǔ)類型定義為靜態(tài)時(shí),表示在這種結(jié)構(gòu)類型的所有變量中,編譯程序?yàn)檫@個(gè)成員只分配一個(gè)存儲(chǔ)空間,即這種結(jié)構(gòu)體類型的所有變量共同使用這個(gè)成員的存儲(chǔ)空間。<類型><結(jié)構(gòu)體類型名>::<靜態(tài)成員名>;其中類型要與在結(jié)構(gòu)體中定義該成員的類型一致,結(jié)構(gòu)體類型名指明靜態(tài)成員屬于哪一個(gè)結(jié)構(gòu)體。structs{staticintid;inteng;};ints::id=50; 這時(shí),未定義結(jié)構(gòu)體變量,但已將靜態(tài)成員的空間安排好。數(shù)據(jù)類型結(jié)構(gòu)體類型若有定義:ss1,s2;則變量s1,s2的id成員占用同一存儲(chǔ)空間(靜態(tài)區(qū))。結(jié)構(gòu)體類型的靜態(tài)成員當(dāng)把結(jié)構(gòu)體類型中的某一個(gè)成員的存儲(chǔ)類型55在結(jié)構(gòu)體中說明的靜態(tài)成員屬于引用性說明,必須在文件作用域中的某一個(gè)地方對(duì)靜態(tài)的成員進(jìn)行定義性說明,且僅能說明一次。ints::id;說明id的初值為0(靜態(tài)變量的缺省初值均為0)在結(jié)構(gòu)體中說明的靜態(tài)成員屬于引用性說明,必須在文件作用域中的56結(jié)構(gòu)體指針結(jié)構(gòu)體指針定義的一般形式為:struct結(jié)構(gòu)體類型*結(jié)構(gòu)體指針名;使用結(jié)構(gòu)體指針之前,必須通過賦值運(yùn)算把相應(yīng)的結(jié)構(gòu)體變量的首地址賦給結(jié)構(gòu)體指針;結(jié)構(gòu)體指針結(jié)構(gòu)體指針定義的一般形式為:57對(duì)于結(jié)構(gòu)成員的引用有以下三種等效的方式:結(jié)構(gòu)體變量.成員名(*結(jié)構(gòu)體指針).成員名結(jié)構(gòu)體指針→成員名對(duì)于結(jié)構(gòu)成員的引用有以下三種等效的方式:結(jié)構(gòu)體變量.成員名58結(jié)構(gòu)體和函數(shù)結(jié)構(gòu)體變量作為參數(shù)結(jié)構(gòu)體的首地址作為參數(shù)結(jié)構(gòu)體和函數(shù)結(jié)構(gòu)體變量作為參數(shù)59結(jié)構(gòu)體型函數(shù)和結(jié)構(gòu)體指針型函數(shù)結(jié)構(gòu)體型函數(shù):函數(shù)的返回值是結(jié)構(gòu)體變量,格式:struct結(jié)構(gòu)體類型函數(shù)名();結(jié)構(gòu)體指針型函數(shù):函數(shù)的返回值是地址,格式:struct結(jié)構(gòu)體類型*結(jié)構(gòu)體指針型函數(shù)名();結(jié)構(gòu)體型函數(shù)和結(jié)構(gòu)體指針型函數(shù)結(jié)構(gòu)體型函數(shù):函數(shù)的返回值是結(jié)607.2共用體C++語言中,允許不同的數(shù)據(jù)類型使用同一存儲(chǔ)區(qū)域,即同一存儲(chǔ)區(qū)域由不同類型的變量共同表示。這種數(shù)據(jù)類型就是共用體。union共用體名{成員表列;}變量表列;uniondata{inti;charch;floatf;}a,b,c;uniondataa,b,c;這幾個(gè)成員在共用體變量中存放在同一地址,相互覆蓋,其長(zhǎng)度為最長(zhǎng)的成員的長(zhǎng)度。7.2共用體C++語言中,允許不同的數(shù)據(jù)類型61共用體變量的引用不能整體引用共用體變量,只能引用變量中的成員。a.i表示為整型a.ch表示為字符型a.f表示為符點(diǎn)型共用體變量的引用不能整體引用共用體變量,只能引用變量中的成員62共用體變量的特點(diǎn)1、共用體的空間在某一時(shí)刻只有一個(gè)成員在起作用。2、共用體變量中的成員是最后一次放入的成員。3、共用體變量不能在定義時(shí)賦初值。4、共用體變量不能作為函數(shù)的參數(shù)或函數(shù)值,但可使用指向共用體的指針變量。5、共用體可以作為結(jié)構(gòu)的成員,結(jié)構(gòu)體也可以作為共用體的成員。共用體變量的特點(diǎn)1、共用體的空間在某一時(shí)刻只有一個(gè)成員在起作63unionun{inti;doubley;};structst{chara[10];unionunb;};cout<<sizeof(structst)<<endl;18unionun1864unionun{shortinta;charc[2];}w;w.c[0]=‘A’;w.c[1]=‘a(chǎn)’;cout<<oct<<w.a<<endl;低字節(jié)低地址高字節(jié)高地址‘a(chǎn)’‘A’w.c[1]w.c[0]2000H2001H輸出:0605010110000101000001aunionun低字節(jié)低地址‘a(chǎn)’‘A’w.c[1]w65voidmain(void){unionEXAMPLE{struct{intx,inty;}in;inta,b;}e;e.a=1;e.b=2;e.in.x=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度行政合同行政主體特權(quán)在緊急情況下的適用合同4篇
- 2025版小學(xué)操場(chǎng)運(yùn)動(dòng)設(shè)施更新與維修合同3篇
- 體育會(huì)展客戶關(guān)系管理考核試卷
- 光纖通信在智能電網(wǎng)故障診斷中的應(yīng)用考核試卷
- 2025年土地轉(zhuǎn)讓合同
- 2025版停車場(chǎng)消防設(shè)施建設(shè)與維護(hù)服務(wù)合同3篇
- 2025版木工材料研發(fā)與勞務(wù)合作合同范本3篇
- 2025年寫作創(chuàng)作分期付款合同
- 2025年加盟代理合約協(xié)議
- 2025年家庭矛盾仲裁協(xié)議
- 油氣行業(yè)人才需求預(yù)測(cè)-洞察分析
- 《數(shù)據(jù)采集技術(shù)》課件-Scrapy 框架的基本操作
- 2025年河北省單招語文模擬測(cè)試二(原卷版)
- 高一化學(xué)《活潑的金屬單質(zhì)-鈉》分層練習(xí)含答案解析
- DB34∕T 4010-2021 水利工程外觀質(zhì)量評(píng)定規(guī)程
- 理論力學(xué)智慧樹知到期末考試答案章節(jié)答案2024年中國(guó)石油大學(xué)(華東)
- 2024老年人靜脈血栓栓塞癥防治中國(guó)專家共識(shí)(完整版)
- 四年級(jí)上冊(cè)脫式計(jì)算100題及答案
- 上海市12校2023-2024學(xué)年高考生物一模試卷含解析
- 儲(chǔ)能電站火災(zāi)應(yīng)急預(yù)案演練
- 人教版(新插圖)二年級(jí)下冊(cè)數(shù)學(xué) 第4課時(shí)用“進(jìn)一法”和“去尾法”解決簡(jiǎn)單的實(shí)際問題 教學(xué)課件
評(píng)論
0/150
提交評(píng)論