資源描述:
《C++大學(xué)基礎(chǔ)教程 教學(xué)課件 作者 徐惠民 C++大學(xué)基礎(chǔ)教程第七章.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、C++大學(xué)基礎(chǔ)教程第7章其它自定義數(shù)據(jù)類型北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心C++語言不僅有豐富的基本數(shù)據(jù)類型,而且允許用戶自己定義數(shù)據(jù)類型。2021/8/302北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心7.1枚舉型數(shù)據(jù)類型7.2結(jié)構(gòu)型數(shù)據(jù)類型7.3聯(lián)合型數(shù)據(jù)類型第7章C++其他自定義數(shù)據(jù)類型7.1枚舉類型7.1枚舉類型枚舉型數(shù)據(jù)類型(簡稱枚舉類型)用戶可以自己定義一種數(shù)據(jù)類型,把這種數(shù)據(jù)類型的變量的可能值一一列舉出來,然后就可以使用這種數(shù)據(jù)類型來定義變量了。這種新的數(shù)據(jù)類型稱為枚舉類型,聲明形式為:enum新的數(shù)據(jù)類型名稱{變量值列表};2021/8/305北京郵電大學(xué)電
2、信工程學(xué)院計(jì)算機(jī)技術(shù)中心例如:enumweekday{sun,mon,tue,wed,thu,fri,sat};新的數(shù)據(jù)類型枚舉元素或枚舉常量7.1枚舉類型2021/8/306北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心定義一個(gè)weekday類型的變量:weekdayday;變量day的取值范圍為類型定義時(shí),表里列舉出來的七種標(biāo)識(shí)符,把這些標(biāo)識(shí)符看作符號常量對待。例如:day=sat;7.1枚舉類型2021/8/307北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心使用枚舉類型時(shí)要注意:在類型定義之后,對枚舉元素按常量處理,不能對它們賦值。枚舉元素具有默認(rèn)值,它們依次為:0,1,2,……。
3、也可以在類型聲明時(shí)另行指定枚舉元素的值。枚舉值可以進(jìn)行關(guān)系運(yùn)算。整數(shù)值不能直接賦給枚舉變量;如需要將整數(shù)值賦給枚舉變量,應(yīng)進(jìn)行強(qiáng)制類型轉(zhuǎn)換7.1枚舉類型2021/8/308北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心枚舉常量在機(jī)器內(nèi)部仍然是用整型數(shù)來存取在定義變量時(shí)要給變量分配存儲(chǔ)空間,那么定義某個(gè)枚舉類型的變量時(shí),分配幾個(gè)字節(jié)的內(nèi)存空間呢?(前面我們看到,枚舉元素的默認(rèn)值都是整數(shù),可以給枚舉元素指定值,也用整數(shù),所以說,在計(jì)算機(jī)內(nèi)部處理時(shí),是把枚舉類型按整型(int)對待的。)7.1枚舉類型2021/8/309北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心7.2結(jié)構(gòu)類型結(jié)構(gòu)型數(shù)據(jù)類型(
4、簡稱結(jié)構(gòu)類型)把現(xiàn)實(shí)生活中意義密切相關(guān)的一組數(shù)據(jù)組合成一個(gè)整體,即由各種數(shù)據(jù)類型(可以是基本數(shù)據(jù)類型或已聲明的自定義數(shù)據(jù)類型)的數(shù)據(jù)組成一個(gè)集合,稱為結(jié)構(gòu)類型。7.2結(jié)構(gòu)類型2021/8/3011北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心結(jié)構(gòu)的聲明形式如下:struct結(jié)構(gòu)類型名{數(shù)據(jù)類型說明符1成員名1;數(shù)據(jù)類型說明符2成員名2;┇數(shù)據(jù)類型說明符n成員名n;};7.2結(jié)構(gòu)類型2021/8/3012北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心例如:structstudent{longnum;//學(xué)號charname[20];//姓名intage;//年齡floatscore;//成績
5、};7.2結(jié)構(gòu)類型2021/8/3013北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心定義student類型的變量:students1;結(jié)構(gòu)類型的變量所占的存儲(chǔ)空間是結(jié)構(gòu)中所有成員所占空間的總和7.2結(jié)構(gòu)類型2021/8/3014北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心給結(jié)構(gòu)變量賦初值,可以在變量定義時(shí)同時(shí)設(shè)置初始值:students2={20041118,”LiLi”,18,90};給結(jié)構(gòu)變量賦值,也可以單獨(dú)給各個(gè)成員賦值。例如:s1.num=20041118;s1.name=”LiLi”;7.2結(jié)構(gòu)類型2021/8/3015北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心屬于同一結(jié)構(gòu)類型的
6、各個(gè)變量之間可以相互賦值,這一點(diǎn)和數(shù)組不同,C++規(guī)定,不能直接進(jìn)行數(shù)組名的賦值,因?yàn)閿?shù)組名是一個(gè)常量,而結(jié)構(gòu)類型的變量可以賦值。不同結(jié)構(gòu)的變量不允許相互賦值,即使這兩個(gè)變量可能具有同樣的成員。7.2結(jié)構(gòu)類型2021/8/3016北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心定義變量時(shí),我們可以定義指向int型的指針變量,類似的,可以有指向新定義的結(jié)構(gòu)型數(shù)據(jù)類型的指針變量。可以將結(jié)構(gòu)變量的地址賦給結(jié)構(gòu)指針,使結(jié)構(gòu)指針的指向確定。使用取地址“&”操作,得到結(jié)構(gòu)變量的地址,這個(gè)地址就是結(jié)構(gòu)的第一個(gè)成員的地址。用結(jié)構(gòu)指針訪問結(jié)構(gòu)成員時(shí),用箭頭操作符代替原來的點(diǎn)操作符。結(jié)構(gòu)類型與指針202
7、1/8/3017北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心聲明一個(gè)結(jié)構(gòu)類型后,就可以用來組成更復(fù)雜的數(shù)據(jù)類型??梢韵蠖x基本數(shù)據(jù)類型的數(shù)組一樣定義結(jié)構(gòu)類型的數(shù)組,稱為結(jié)構(gòu)數(shù)組。結(jié)構(gòu)數(shù)組的每個(gè)元素都是該結(jié)構(gòu)類型的變量。結(jié)構(gòu)類型與數(shù)組2021/8/3018北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心用結(jié)構(gòu)變量作為函數(shù)參數(shù),屬于按值傳遞,這時(shí)結(jié)構(gòu)變量中所有成員的值都將被一一復(fù)制到形參中。用結(jié)構(gòu)變量作為函數(shù)參數(shù),也可以按引用傳遞,這時(shí)僅僅把結(jié)構(gòu)變量的地址傳遞給形參,而不用把結(jié)構(gòu)變量的成員值一一復(fù)制。結(jié)構(gòu)類型與函數(shù)2021/8/301