freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第7章自定義數(shù)據(jù)類型(已修改)

2025-10-28 13:05 本頁面
 

【正文】 第 7章 自定義數(shù)據(jù)類型 結(jié)構(gòu)體類型 共用體 枚舉類型 用 typedef聲明類型 C++提供了許多種基本的數(shù)據(jù)類型 (如 int、 float、double、 char等 )供用戶使用。但是由于程序需要處理的問題往往比較復(fù)雜,而且呈多樣化,已有的數(shù)據(jù)類型顯得不能滿足使用要求。因此 C++允許用戶根據(jù)需要自己聲明一些類型 ,例如第 5章介紹的數(shù)組就是用戶自己聲明的數(shù)據(jù)類型。此外,用戶可以自己聲明的類型還有結(jié)構(gòu)體 (structure)類型、共用體 (union)類型、枚舉 (enumeration)類型、類 (class)類型等,這些統(tǒng)稱為用戶自定義類型 (userdefined type,UDT)。 本章介紹結(jié)構(gòu)體類型、共用體類型和枚舉類型,第 8章將介紹類類型。 有時(shí)需要將不同類型的數(shù)據(jù)組合成一個(gè)有機(jī)的整體,以供用戶方便地使用。這些組合在一個(gè)整體中的數(shù)據(jù)是互相聯(lián)系的。例如,一個(gè)學(xué)生的學(xué)號(hào)、姓名、性別、年齡、成績(jī)、家庭地址等項(xiàng),都是這個(gè)學(xué)生的屬性。見圖 。 圖 結(jié)構(gòu)體類型 結(jié)構(gòu)體概述 在一個(gè)組合項(xiàng)中包含若干個(gè)類型不同(當(dāng)然也可以相同)的數(shù)據(jù)項(xiàng)。C和 C++允許用戶自己指定這樣一種數(shù)據(jù)類型,它稱為結(jié)構(gòu)體。它相當(dāng)于其他高級(jí)語言中的記錄 (record)。 例如,可以通過下面的聲明來建立如圖 數(shù)據(jù)類型。 struct Student //聲明一個(gè)結(jié)構(gòu)體類型 Student { int num。 //包括一個(gè)整型變量 num char name[20]。 //包括一個(gè)字符數(shù)組 name, 可以容納 20個(gè)字符 char sex。 //包括一個(gè)字符變量 sex int age。 //包括一個(gè)整型變量 age float score。 //包括一個(gè)單精度型變量 char addr[30]。 //包括一個(gè)字符數(shù)組 addr, 可以容納 30個(gè)字符 } 。 //最后有一個(gè)分號(hào) 這樣,程序設(shè)計(jì)者就聲明了一個(gè)新的結(jié)構(gòu)體類型Student(struct是聲明結(jié)構(gòu)體類型時(shí)所必須使用的關(guān)鍵字,不能省略 ),它向編譯系統(tǒng)聲明: 這是一種結(jié)構(gòu)體類型,它包括 num, name, sex, age, score, addr等不同類型的數(shù)據(jù)項(xiàng)。應(yīng)當(dāng)說明 Student是一個(gè)類型名,它和系統(tǒng)提供的標(biāo)準(zhǔn)類型(如 int、 char、float、 double等)一樣,都可以用來定義變量,只不過結(jié)構(gòu)體類型需要事先由用戶自己聲明而已。 聲明一個(gè)結(jié)構(gòu)體類型的一般形式為 struct 結(jié)構(gòu)體類型名 {成員表列}; 結(jié)構(gòu)體類型名用來作結(jié)構(gòu)體類型的標(biāo)志。上面的聲明中 Student就是結(jié)構(gòu)體類型名。大括號(hào)內(nèi)是該結(jié)構(gòu)體中的全部成員 (member), 由它們組成一個(gè)特定的結(jié)構(gòu)體。上例中的 num,name,sex,score等都是結(jié)構(gòu)體中的成員。在聲明一個(gè)結(jié)構(gòu)體類型時(shí)必須對(duì)各成員都進(jìn)行類型聲明,即 類型名 成員名; 每一個(gè)成員也稱為結(jié)構(gòu)體中的一個(gè)域 (field)。 成員表列又稱為域表。成員名的定名規(guī)則與變量名的定名規(guī)則相同。 聲明結(jié)構(gòu)體類型的位置一般在文件的開頭,在所有函數(shù) (包括 main函數(shù) )之前,以便本文件中所有的函數(shù)都能利用它來定義變量。當(dāng)然也可以在函數(shù)中聲明結(jié)構(gòu)體類型。 在 C語言中,結(jié)構(gòu)體的成員只能是數(shù)據(jù) (如上面例子中所表示的那樣 )。 C++對(duì)此加以擴(kuò)充,結(jié)構(gòu)體的成員既可以包括數(shù)據(jù) (即數(shù)據(jù)成員 ),又可以包括函數(shù) (即函數(shù)成員 ),以適應(yīng)面向?qū)ο蟮某绦蛟O(shè)計(jì)。但是由于 C++提供了類 (class)類型,一般情況下,不必使用帶函數(shù)的結(jié)構(gòu)體,因此在本章中只介紹只含數(shù)據(jù)成員的結(jié)構(gòu)體,有關(guān)包含函數(shù)成員的結(jié)構(gòu)體將在第 8章介紹類類型時(shí)一并介紹。 前面只是指定了一種結(jié)構(gòu)體類型,它相當(dāng)于一個(gè)模型,但其中并無具體數(shù)據(jù),系統(tǒng)也不為之分配實(shí)際的內(nèi)存單元。為了能在程序中使用結(jié)構(gòu)體類型的數(shù)據(jù),應(yīng)當(dāng)定義結(jié)構(gòu)體類型的變量,并在其中存放具體的數(shù)據(jù)。 1. 定義結(jié)構(gòu)體類型變量的方法 可以采取以下 3種方法定義結(jié)構(gòu)體類型的變量。 (1) 先聲明結(jié)構(gòu)體類型再定義變量名 如上面已定義了一個(gè)結(jié)構(gòu)體類型 Student, 可以用它來定義結(jié)構(gòu)體變量。如 Student student1, student2; 結(jié)構(gòu)體類型變量的定義方法及其初始化 以上定義了 student1和 student2為結(jié)構(gòu)體類型Student的變量,即它們具有 Student類型的結(jié)構(gòu)。如圖 。 圖 在定義了結(jié)構(gòu)體變量后,系統(tǒng)會(huì)為之分配內(nèi)存單元。例如 student1和 student2在內(nèi)存中各占 63個(gè)字節(jié)( 4+20+1+4+4+30=63)。 (2) 在聲明類型的同時(shí)定義變量 例如: struct Student //聲明結(jié)構(gòu)體類型 Student { int num。 char name[20]。 char sex。 int age。 float score。 char addr[30]。 } student1,student2。 //定義兩個(gè)結(jié)構(gòu)體類型 Student的變量 student1,student2 這種形式的定義的一般形式為 struct 結(jié)構(gòu)體名 { 成員表列 }變量名表列; (3) 直接定義結(jié)構(gòu)體類型變量 其一般形式為 struct //注意沒有結(jié)構(gòu)體類型名 { 成員表列 } 變量名表列; 這種方法雖然合法,但很少使用。提倡先定義類型后定義變量的第 (1)種方法。在程序比較簡(jiǎn)單,結(jié)構(gòu)體類型只在本文件中使用的情況下,也可以用第(2)種方法。 關(guān)于結(jié)構(gòu)體類型,有幾點(diǎn)要說明: (1) 不要誤認(rèn)為凡是結(jié)構(gòu)體類型都有相同的結(jié)構(gòu)。實(shí)際上,每一種結(jié)構(gòu)體類型都有自己的結(jié)構(gòu),可以定義出許多種具體的結(jié)構(gòu)體類型。 (2) 類型與變量是不同的概念,不要混淆。只能對(duì)結(jié)構(gòu)體變量中的成員賦值,而不能對(duì)結(jié)構(gòu)體類型賦值。在編譯時(shí),是不會(huì)為類型分配空間的,只為變量分配空間。 (3) 對(duì)結(jié)構(gòu)體中的成員(即 “ 域 ” ),可以單獨(dú)使用,它的作用與地位相當(dāng)于普通變量。關(guān)于對(duì)成員的引用方法見 。 (4) 成員也可以是一個(gè)結(jié)構(gòu)體變量。 如 struct Date //聲明一個(gè)結(jié)構(gòu)體類型 Date { int month。 int day。 int year。 } 。 struct Student //聲明一個(gè)結(jié)構(gòu)體類型 Student { int num。 char name[20]。 char sex。 int age。 Date birthday。 //Date是結(jié)構(gòu)體類型, birthday是 Date類型的成員 char addr[30]。 }student1,student2。 //定義 student1和 student2為結(jié)構(gòu)體類型 Student的變量 Student的結(jié)構(gòu)見圖 。 圖 (5) 結(jié)構(gòu)體中的成員名可以與程序中的變量名相同 ,但二者沒有關(guān)系。例如 ,程序中可以另定義一個(gè)整型變量 num,它與 student中的 num是兩回事 ,互不影響。 2. 結(jié)構(gòu)體變量的初始化 和其他類型變量一樣,對(duì)結(jié)構(gòu)體變量可以在定義時(shí)指定初始值。如 struct Student { int num。 char name[20]。 char sex。 int age。 float score。 char addr[30]。 } student1={10001, ″Zhang Xin″,′M′,19,″Shanghai″}。 這樣,變量 student1中的數(shù)據(jù)如圖 。 也可以采取聲明類型與定義變量分開的形式,在定義變量時(shí)進(jìn)行初始化: Student student2={10002, ″Wang Li″,′F′,20,98,″Beijing″。 //Student是已聲明的結(jié)構(gòu)體類型 在定義了結(jié)構(gòu)體變量以后 ,當(dāng)然可以引用這個(gè)變量。 (1) 可以將一個(gè)結(jié)構(gòu)體變量的值賦給另一個(gè)具有相同結(jié)構(gòu)的結(jié)構(gòu)體變量。如上面的 student1和student2都是 student類型的變量,可以這樣賦值: student1= student2。 (2) 可以引用一個(gè)結(jié)構(gòu)體變量中的一個(gè)成員的值。例如, student1中的成員的值,如果 student1的值如圖 ,則 10001。 引用結(jié)構(gòu)體變量中成員的一般方式為 結(jié)構(gòu)體變量名 .成員名 結(jié)構(gòu)體變量的引用 例如可以這樣對(duì)變量的成員賦值 : =10010。 (3) 如果成員本身也是一個(gè)結(jié)構(gòu)體類型 ,則要用若干個(gè)成員運(yùn)算符 ,一級(jí)一級(jí)地找到最低一級(jí)的成員。例如 ,對(duì)上面定義的結(jié)構(gòu)體變量 student1, 可以這樣訪問各成員 : (引用結(jié)構(gòu)體變量 student1中的 num成員 ) 如果想引用 student1變量中的 birthday成員中的month成員,不能寫成 , 必須逐級(jí)引用,即 (引用結(jié)構(gòu)體變量 student1中的 birthday成員中的 month成員 ) (4) 不能將一個(gè)結(jié)構(gòu)體變量作為一個(gè)整體進(jìn)行輸入和輸出。例如 ,已定義 student1和 student2為結(jié)構(gòu)體變量 ,并且它們已有值。不能企圖這樣輸出結(jié)構(gòu)體變量中的各成員的值 : coutstudent1。 只能對(duì)結(jié)構(gòu)體變量中的各個(gè)成員分別進(jìn)行輸入和輸出。 (5) 對(duì)結(jié)構(gòu)體變量的成員可以像普通變量一樣進(jìn)行
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1