版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第7章復(fù)雜數(shù)據(jù)類型第7章復(fù)雜數(shù)據(jù)類型17.1結(jié)構(gòu)體將不同種類型的數(shù)據(jù)有序地組合在一起,構(gòu)造出一個新的數(shù)據(jù)類型,這種形式稱為結(jié)構(gòu)體。結(jié)構(gòu)體是多種類型組合的數(shù)據(jù)類型。7.1結(jié)構(gòu)體將不同種類型的數(shù)據(jù)有序地組合在一起,構(gòu)造出一個新2struct結(jié)構(gòu)體名{成員列表};structstudent{intnum;charname[20];charsex;charaddr[30];};結(jié)構(gòu)體名關(guān)鍵字不同數(shù)據(jù)類型組成的成員分號不能少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)體類型變量時才開辟內(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二、在定義類型的同時定義變量structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}student1,student2;struct結(jié)構(gòu)體名{成員列表}變量名列表;緊接著定義變量二、在定義類型的同時定義變量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、在編譯時,僅對變量分配空間,不對類型分配空間。1、結(jié)構(gòu)體類型的變量在內(nèi)存依照其成員的順序順序排列,所占內(nèi)存空間的大小是其全體成員所占空間的總和。3、對結(jié)構(gòu)體中各個成員可以單獨引用、賦值,其作用與變量等同。格式:變量名.成員名student1.num說明:2、在編譯時,僅對變量分配空間,不對類型分配空間。1、結(jié)構(gòu)體84、結(jié)構(gòu)體的成員可以是另一個結(jié)構(gòu)體類型。structdate{intmonth;intday;intyear;};structstudent{intnum;charname[20];
structdate
birthday;};成員類型成員名5、成員名可以與程序中的變量名相同,二者分占不同的內(nèi)存單元,互不干擾。例如,在程序中仍可以定義變量intnum;4、結(jié)構(gòu)體的成員可以是另一個結(jié)構(gòu)體類型。structda9結(jié)構(gòu)體類型變量的引用1、不能對結(jié)構(gòu)體變量整體賦值或輸出,只能分別對各個成員引用。cin>>student1;cin>>student1.num;student1.num=100;可以將一個結(jié)構(gòu)體變量整體賦給另外一個相同類型的結(jié)構(gòu)體變量。student2=student1;2、嵌套的結(jié)構(gòu)體變量必須逐層引用。student1.birthday.day=25;3、結(jié)構(gòu)體變量中的成員可以同一般變量一樣進(jìn)行運算。student1.birthday.day++;student1.score+=60;錯誤必須用成員名引用結(jié)構(gòu)體類型變量的引用1、不能對結(jié)構(gòu)體變量整體賦值或輸出,只能10對局部變量類型的結(jié)構(gòu)體變量初始化voidmain(void){structstudent{longintnum;charname[20];charsex;charaddr[30];}student1={901031,“LiLin”,‘M’,“123BeijingRoad”}; cout<<<<endl;輸出:LiLin對變量初始化,一一賦值對局部變量類型的結(jié)構(gòu)體變量初始化voidmain(void11關(guān)于結(jié)構(gòu)類型變量的使用,說明以下幾點:1、同類型的結(jié)構(gòu)體變量之間可以直接賦值。這種賦值等同于各個成員的依次賦值。2、結(jié)構(gòu)體變量不能直接進(jìn)行輸入輸出,它的每一個成員能否直接進(jìn)行輸入輸出,取決于其成員的類型,若是基本類型或是字符數(shù)組,則可以直接輸入輸出。3、結(jié)構(gòu)體變量可以作為函數(shù)的參數(shù),函數(shù)也可以返回結(jié)構(gòu)體的值。當(dāng)函數(shù)的形參與實參為結(jié)構(gòu)體類型的變量時,這種結(jié)合方式屬于值調(diào)用方式,即屬于值傳遞。(舉例說明)關(guān)于結(jié)構(gòu)類型變量的使用,說明以下幾點:12結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組中的每個元素都是一個結(jié)構(gòu)體類型的變量,其中包括該類型的各個成員。數(shù)組各元素在內(nèi)存中連續(xù)存放。結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組中的每個元素都是一個結(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)體類型中的某一個成員的存儲類型定義為靜態(tài)時,表示在這種結(jié)構(gòu)類型的所有變量中,編譯程序為這個成員只分配一個存儲空間,即這種結(jié)構(gòu)體類型的所有變量共同使用這個成員的存儲空間。<類型><結(jié)構(gòu)體類型名>::<靜態(tài)成員名>;其中類型要與在結(jié)構(gòu)體中定義該成員的類型一致,結(jié)構(gòu)體類型名指明靜態(tài)成員屬于哪一個結(jié)構(gòu)體。structs{staticintid;inteng;};ints::id=50; 這時,未定義結(jié)構(gòu)體變量,但已將靜態(tài)成員的空間安排好。數(shù)據(jù)類型結(jié)構(gòu)體類型若有定義:ss1,s2;則變量s1,s2的id成員占用同一存儲空間(靜態(tài)區(qū))。結(jié)構(gòu)體類型的靜態(tài)成員當(dāng)把結(jié)構(gòu)體類型中的某一個成員的存儲類型19在結(jié)構(gòu)體中說明的靜態(tài)成員屬于引用性說明,必須在文件作用域中的某一個地方對靜態(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īng)的結(jié)構(gòu)體變量的首地址賦給結(jié)構(gòu)體指針;結(jié)構(gòu)體指針結(jié)構(gòu)體指針定義的一般形式為:21對于結(jié)構(gòu)成員的引用有以下三種等效的方式:結(jié)構(gòu)體變量.成員名(*結(jié)構(gòu)體指針).成員名結(jié)構(gòu)體指針→成員名對于結(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ù)類型使用同一存儲區(qū)域,即同一存儲區(qū)域由不同類型的變量共同表示。這種數(shù)據(jù)類型就是共用體。union共用體名{成員表列;}變量表列;uniondata{inti;charch;floatf;}a,b,c;uniondataa,b,c;這幾個成員在共用體變量中存放在同一地址,相互覆蓋,其長度為最長的成員的長度。7.2共用體C++語言中,允許不同的數(shù)據(jù)類型25共用體變量的引用不能整體引用共用體變量,只能引用變量中的成員。a.i表示為整型a.ch表示為字符型a.f表示為符點型共用體變量的引用不能整體引用共用體變量,只能引用變量中的成員26共用體變量的特點1、共用體的空間在某一時刻只有一個成員在起作用。2、共用體變量中的成員是最后一次放入的成員。3、共用體變量不能在定義時賦初值。4、共用體變量不能作為函數(shù)的參數(shù)或函數(shù)值,但可使用指向共用體的指針變量。5、共用體可以作為結(jié)構(gòu)的成員,結(jié)構(gòu)體也可以作為共用體的成員。共用體變量的特點1、共用體的空間在某一時刻只有一個成員在起作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枚舉類型如果一個變量只有幾種可能的值,可以定義為枚舉類型。枚舉類型就是將變量的值一一列舉出來,變量的值僅限于列舉出來的值的范圍內(nèi)。7.3枚舉類型如果一個變量只有幾種可能的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)識符,所代表的意義由用戶決定,在程序中體現(xiàn)出來。數(shù)據(jù)類型可能取的值變量另一種定義變量的方法enumweekday{sun,mon,tue,331、枚舉元素為常量,不可賦值運算。sun=0;mon=1;2、在定義枚舉類型的同時,編譯程序按順序給每個枚舉元素一個對應(yīng)的序號,序號從0開始,后續(xù)元素依次加1。enumweekday{sun,mon,tue,wed,thu,fri,sat};0,1,2,3,4,5,63、可以在定義時人為指定枚舉元素的序號值。enumweekday{sun=9,mon=2,tue,wed,thu,fri,sat};9,2,3,4,5,6,74、只能給枚舉變量賦枚舉值,若賦序號值必須進(jìn)行強制類型轉(zhuǎn)換。day=mon;day=1;day=(enumweekday)1;1、枚舉元素為常量,不可賦值運算。sun=0;mon345、枚舉元素可以用來進(jìn)行比較判斷。if(workday==mon)if(workday>sun)6、枚舉值可以進(jìn)行加減一個整數(shù)n的運算,得到其前后第n個元素的值。workday=sun;workday=(week)(workday+2);workday==tue7、枚舉值可以按整型輸出其序號值。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)造出一個新的數(shù)據(jù)類型,這種形式稱為結(jié)構(gòu)體。結(jié)構(gòu)體是多種類型組合的數(shù)據(jù)類型。7.1結(jié)構(gòu)體將不同種類型的數(shù)據(jù)有序地組合在一起,構(gòu)造出一個新38struct結(jié)構(gòu)體名{成員列表};structstudent{intnum;charname[20];charsex;charaddr[30];};結(jié)構(gòu)體名關(guān)鍵字不同數(shù)據(jù)類型組成的成員分號不能少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)體類型變量時才開辟內(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二、在定義類型的同時定義變量structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}student1,student2;struct結(jié)構(gòu)體名{成員列表}變量名列表;緊接著定義變量二、在定義類型的同時定義變量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、在編譯時,僅對變量分配空間,不對類型分配空間。1、結(jié)構(gòu)體類型的變量在內(nèi)存依照其成員的順序順序排列,所占內(nèi)存空間的大小是其全體成員所占空間的總和。3、對結(jié)構(gòu)體中各個成員可以單獨引用、賦值,其作用與變量等同。格式:變量名.成員名student1.num說明:2、在編譯時,僅對變量分配空間,不對類型分配空間。1、結(jié)構(gòu)體444、結(jié)構(gòu)體的成員可以是另一個結(jié)構(gòu)體類型。structdate{intmonth;intday;intyear;};structstudent{intnum;charname[20];
structdate
birthday;};成員類型成員名5、成員名可以與程序中的變量名相同,二者分占不同的內(nèi)存單元,互不干擾。例如,在程序中仍可以定義變量intnum;4、結(jié)構(gòu)體的成員可以是另一個結(jié)構(gòu)體類型。structda45結(jié)構(gòu)體類型變量的引用1、不能對結(jié)構(gòu)體變量整體賦值或輸出,只能分別對各個成員引用。cin>>student1;cin>>student1.num;student1.num=100;可以將一個結(jié)構(gòu)體變量整體賦給另外一個相同類型的結(jié)構(gòu)體變量。student2=student1;2、嵌套的結(jié)構(gòu)體變量必須逐層引用。student1.birthday.day=25;3、結(jié)構(gòu)體變量中的成員可以同一般變量一樣進(jìn)行運算。student1.birthday.day++;student1.score+=60;錯誤必須用成員名引用結(jié)構(gòu)體類型變量的引用1、不能對結(jié)構(gòu)體變量整體賦值或輸出,只能46對局部變量類型的結(jié)構(gòu)體變量初始化voidmain(void){structstudent{longintnum;charname[20];charsex;charaddr[30];}student1={901031,“LiLin”,‘M’,“123BeijingRoad”}; cout<<<<endl;輸出:LiLin對變量初始化,一一賦值對局部變量類型的結(jié)構(gòu)體變量初始化voidmain(void47關(guān)于結(jié)構(gòu)類型變量的使用,說明以下幾點:1、同類型的結(jié)構(gòu)體變量之間可以直接賦值。這種賦值等同于各個成員的依次賦值。2、結(jié)構(gòu)體變量不能直接進(jìn)行輸入輸出,它的每一個成員能否直接進(jìn)行輸入輸出,取決于其成員的類型,若是基本類型或是字符數(shù)組,則可以直接輸入輸出。3、結(jié)構(gòu)體變量可以作為函數(shù)的參數(shù),函數(shù)也可以返回結(jié)構(gòu)體的值。當(dāng)函數(shù)的形參與實參為結(jié)構(gòu)體類型的變量時,這種結(jié)合方式屬于值調(diào)用方式,即屬于值傳遞。(舉例說明)關(guān)于結(jié)構(gòu)類型變量的使用,說明以下幾點:48結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組中的每個元素都是一個結(jié)構(gòu)體類型的變量,其中包括該類型的各個成員。數(shù)組各元素在內(nèi)存中連續(xù)存放。結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組中的每個元素都是一個結(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)體類型中的某一個成員的存儲類型定義為靜態(tài)時,表示在這種結(jié)構(gòu)類型的所有變量中,編譯程序為這個成員只分配一個存儲空間,即這種結(jié)構(gòu)體類型的所有變量共同使用這個成員的存儲空間。<類型><結(jié)構(gòu)體類型名>::<靜態(tài)成員名>;其中類型要與在結(jié)構(gòu)體中定義該成員的類型一致,結(jié)構(gòu)體類型名指明靜態(tài)成員屬于哪一個結(jié)構(gòu)體。structs{staticintid;inteng;};ints::id=50; 這時,未定義結(jié)構(gòu)體變量,但已將靜態(tài)成員的空間安排好。數(shù)據(jù)類型結(jié)構(gòu)體類型若有定義:ss1,s2;則變量s1,s2的id成員占用同一存儲空間(靜態(tài)區(qū))。結(jié)構(gòu)體類型的靜態(tài)成員當(dāng)把結(jié)構(gòu)體類型中的某一個成員的存儲類型55在結(jié)構(gòu)體中說明的靜態(tài)成員屬于引用性說明,必須在文件作用域中的某一個地方對靜態(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īng)的結(jié)構(gòu)體變量的首地址賦給結(jié)構(gòu)體指針;結(jié)構(gòu)體指針結(jié)構(gòu)體指針定義的一般形式為:57對于結(jié)構(gòu)成員的引用有以下三種等效的方式:結(jié)構(gòu)體變量.成員名(*結(jié)構(gòu)體指針).成員名結(jié)構(gòu)體指針→成員名對于結(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ù)類型使用同一存儲區(qū)域,即同一存儲區(qū)域由不同類型的變量共同表示。這種數(shù)據(jù)類型就是共用體。union共用體名{成員表列;}變量表列;uniondata{inti;charch;floatf;}a,b,c;uniondataa,b,c;這幾個成員在共用體變量中存放在同一地址,相互覆蓋,其長度為最長的成員的長度。7.2共用體C++語言中,允許不同的數(shù)據(jù)類型61共用體變量的引用不能整體引用共用體變量,只能引用變量中的成員。a.i表示為整型a.ch表示為字符型a.f表示為符點型共用體變量的引用不能整體引用共用體變量,只能引用變量中的成員62共用體變量的特點1、共用體的空間在某一時刻只有一個成員在起作用。2、共用體變量中的成員是最后一次放入的成員。3、共用體變量不能在定義時賦初值。4、共用體變量不能作為函數(shù)的參數(shù)或函數(shù)值,但可使用指向共用體的指針變量。5、共用體可以作為結(jié)構(gòu)的成員,結(jié)構(gòu)體也可以作為共用體的成員。共用體變量的特點1、共用體的空間在某一時刻只有一個成員在起作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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 警務(wù)室五個制度
- 2026西安未央湖社區(qū)衛(wèi)生服務(wù)中心招聘參考考試試題附答案解析
- 2026上半年云南事業(yè)單位聯(lián)考能源職業(yè)技術(shù)學(xué)院招聘21人備考考試試題附答案解析
- 2026北京協(xié)和醫(yī)院婦科內(nèi)分泌與生殖中心合同制科研助理招聘參考考試題庫附答案解析
- 2026貴州貴陽市息烽縣衛(wèi)生健康局公益性崗位招聘2人備考考試試題附答案解析
- 2026山東濟(jì)寧曲阜市事業(yè)單位公開招聘初級綜合類崗位人員備考考試題庫附答案解析
- 2026年楚雄州武定縣公安局特巡警大隊招聘輔警(2人)備考考試題庫附答案解析
- 2026貴州遵義清華中學(xué)教師招聘4人備考考試題庫附答案解析
- 2026年杭州市富陽區(qū)春建鄉(xiāng)人民政府網(wǎng)格隊伍招聘1人備考考試試題附答案解析
- 2026廣東廣州市天河區(qū)華南農(nóng)業(yè)大學(xué)附屬小學(xué)英語教師招聘1人參考考試試題附答案解析
- 2026中國國際航空招聘面試題及答案
- (2025年)工會考試附有答案
- 2026年國家電投集團(tuán)貴州金元股份有限公司招聘備考題庫完整參考答案詳解
- 復(fù)工復(fù)產(chǎn)安全知識試題及答案
- 中燃魯西經(jīng)管集團(tuán)招聘筆試題庫2026
- 資產(chǎn)接收協(xié)議書模板
- 數(shù)據(jù)中心合作運營方案
- 印鐵涂料基礎(chǔ)知識
- 工資欠款還款協(xié)議書
- 石籠網(wǎng)廠施工技術(shù)交底
- 新建粉煤灰填埋場施工方案
評論
0/150
提交評論