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

正文內(nèi)容

計(jì)算機(jī)本科c語言第十一章講(已修改)

2025-01-30 21:40 本頁面
 

【正文】 第十一章 結(jié)構(gòu)體與共用體 重點(diǎn): 1、結(jié)構(gòu)體與聯(lián)合體的概念 2、結(jié)構(gòu)體定義、結(jié)構(gòu)體變量的定 義與引用 枚舉類型的概念 已講過的數(shù)據(jù)類型有: 簡(jiǎn)單類型:整型、實(shí)型、字符型。變量與變量之間無固 定的內(nèi)在連續(xù),分別表示獨(dú)立的數(shù)據(jù),無從 屬關(guān)系。 數(shù)組型: 同一類型數(shù)據(jù)的組合,并用下標(biāo)把數(shù)組 的各元素有序地聯(lián)系起來, 指針型: 主要用于動(dòng)態(tài)存儲(chǔ)分配。 ? 結(jié)構(gòu)體 : 用結(jié)構(gòu)體,用戶可以根據(jù)需要定義一種數(shù)據(jù)類型,這種數(shù)據(jù)類型是由 C語言中基本數(shù)據(jù)類型或用戶已定義的數(shù)據(jù)類型組成的 ? 復(fù)合類型 ? 。 將不同類型的數(shù)據(jù)組合成一個(gè)有機(jī)的整體,以便于引用。這些組合在一個(gè)整體中的數(shù)據(jù)是互相聯(lián)系的。例如,一個(gè)人的姓名、性別、年齡、家庭地址等項(xiàng)。這些項(xiàng)都與某一個(gè)人相聯(lián)系,應(yīng)當(dāng)把它們組織成一個(gè)組合項(xiàng),在一個(gè)組合項(xiàng)中包含若干個(gè)類型不同(當(dāng)然也可以相同)的數(shù)據(jù)項(xiàng)。 C語言提供了這樣一種數(shù)據(jù)結(jié)構(gòu),它稱為結(jié)構(gòu)體( structure)。它相當(dāng)于其它高級(jí)語言中的? 記錄 ? 。 例如: 上面講的 ,由不同類型的數(shù)據(jù)項(xiàng)組成的復(fù)合類型 ,可以定為如下結(jié)構(gòu) struct person {char name[20]。 int age。 char sex。 long num。 char nation。 成員名 int education。 char addrees[20]。 long tel。 }。 共占 54字節(jié) 上面定義了一個(gè)結(jié)構(gòu)體類型, struct person( struct是關(guān)鍵字,不能省略),表示這是一個(gè) ? 結(jié)構(gòu)體類型 ? 。它包括 name,age, address等不同類型的數(shù)據(jù)項(xiàng)。應(yīng)當(dāng)注意: struct person是程序設(shè)計(jì)者自己定義的類型名。它和系統(tǒng)已定義了的標(biāo)準(zhǔn)類型(如 int、 char、 float、 double等)一樣可以用來作為定義變量的類型。 定義一個(gè)結(jié)構(gòu)體類型的一般形式為: struct 結(jié)構(gòu)體名 {成員表列 }。 花括弧內(nèi)是該結(jié)構(gòu)體中的各個(gè)成員(或稱分量),由它們組成一個(gè)結(jié)構(gòu)體。例如,上例中的 name,sex等都是成員。對(duì)各成員都應(yīng)進(jìn)行類型說明,即 類型標(biāo)識(shí)符 成員名 也可以把 ? 成員表列 ? 稱為 ? 域表 ? 。 ? 結(jié)構(gòu)體的定義明確地描述了該結(jié)構(gòu)的組織形式,在程序執(zhí)行時(shí),結(jié)構(gòu)體的定義并不引起系統(tǒng)為該結(jié)構(gòu)分配內(nèi)存空間,結(jié)構(gòu)體的定義僅僅定義了一種特定的數(shù)據(jù)類型,它制定了這種構(gòu)造使用內(nèi)存的模式,這是一種數(shù)據(jù)類型的定義,并不是變量的定義。 定義結(jié)構(gòu)體類型變量的方法 要定義一個(gè)結(jié)構(gòu)體類型的變量 , 可以采取以下三種方法 。 一 、 先定義 結(jié)構(gòu)體類型 再定義 變量名 如上面已定義了一個(gè) 結(jié)構(gòu)體類型 struct person, 可以用它來定義變量 。 如 struct person person1,person2。 定義 person1和 person2為 struct person類型變量,即它們具有 struct person類型的結(jié)構(gòu)。如圖所示。 student1 ZhangXin M 19 …… student2 WangLI F 20 …… 應(yīng)當(dāng)注意:將一個(gè)變量定義為標(biāo)準(zhǔn)類型(基本數(shù)據(jù)類型)與定義為結(jié)構(gòu)體類型不同之處在于:后者不僅要求指定變量為結(jié)構(gòu)體類型,而且要求指定為某一特定的結(jié)構(gòu)體類型(例如, struct person),不能只指定為 ? struct型 ? 而不指定結(jié)構(gòu)體名。 而在定義變量為整型時(shí),只需指定為 int型即可。換句話說,可以定義許多種具體的結(jié)構(gòu)體類型。 為了使用方便,人們通常用一個(gè)符號(hào)常量代表一個(gè)結(jié)構(gòu)體類型。在程序開頭,用 # define PERSON struct person 這樣在程序中, PERSON與 struct person完全等效。 PERSON {char name[20]。 int age。 char sex。 long num。 char nation。 int education。 char addrees[20]。 long tel。 }。 可以直接用 PERSON定義變量。如 PERSON person1,person2; 用這種方法定義變量和用 int,float定義變量的形式相仿,不必再寫關(guān)鍵字 比較大,往往將對(duì)結(jié)構(gòu)體類型的定義集中放到一個(gè)文件(以 h為后綴的 ? 頭文件 )中。哪個(gè)源文件需用到此結(jié)構(gòu)類型則可用# include命令將該頭文件包含到本文件中。這樣做便于裝配,便于修改,便于使用。 二、在定義類型的同時(shí)定義變量 例如: struct student { int num。 char name[2]。 char sex。 int age。 float score。 char addr[30 ]。 } student1,student2。 它的作用與前面定義的相同。既定義了兩個(gè)struct student類型的變量student1,式為: struct 結(jié)構(gòu)體名 { 成員表列 } 變量名表列; 三、直接定義結(jié)構(gòu)類型變量 其一般形式為: struct { 成員表列 。 }變量名表列; 即不出現(xiàn)結(jié)構(gòu)體名。 關(guān)于結(jié)構(gòu)體類型,有幾點(diǎn)要說明: 1.類型與變量是不同的概念,不要混同。對(duì)結(jié)構(gòu)體變量來說,在定義時(shí)一般先定義一個(gè)結(jié)構(gòu)體類型,然后定義變量為該類型。只能對(duì)變量賦值、存取或運(yùn)算,而不能對(duì)一個(gè)類型賦值、存取或運(yùn)算。在編譯時(shí),對(duì)類型是不分配空間的,只對(duì)變量分配空間。 2.對(duì)結(jié)構(gòu)體中的成員(即 ? 域 ? ),可以單獨(dú)使用,它的作用與地位相當(dāng)于普通變量。關(guān)于對(duì)成員的引用方法見 。 3.成員也可以是一個(gè)結(jié)構(gòu)體變量。 如: struct date { int month; int day; int year; }。 struct student {int num。 char name[20]。 char sex; int age; Struct date birthday; char addr[30]。 } student1,student2。 然后在定義 struct student類型時(shí),成員 birthday的類型定義為 struct date類型 . struct student的結(jié)構(gòu)見圖10 3所示。已定義的類型 struct date與其它類型(如int ,char)一樣可以用來定義成員的類型 birthday num name sex age month day year addr 結(jié)構(gòu)體類型變量的引用 在定義了結(jié)構(gòu)體變量以后 , 當(dāng)然可以引用這個(gè)變量 。但應(yīng)遵守以下規(guī)則: 1 不能將一個(gè)結(jié)構(gòu)體變量作為一個(gè)整體進(jìn)行輸入和輸出 。 例如 , 已定義: student1和 student2為結(jié)構(gòu)體變量并且它們已有值 。 不能這樣引用: printf(”%d, %s, %c,%d,%f,%s\n,”, student1)。 只能對(duì)結(jié)構(gòu)體變量中的各個(gè)成員分別輸出。引用方式為: 結(jié)構(gòu)體變量名 .成員名 例如 : student1變量中的 num 成員,即 student1的 num(學(xué)號(hào))項(xiàng)。可以對(duì)變量的成員賦值,例如: =10010。 “”是成員(分量)運(yùn)算符,它在所有的運(yùn)算符中優(yōu)先級(jí)最高,因此可以把 待。 上面賦值語句的作用是將整數(shù) 10010賦給 student1變量中的成員 num。 新的標(biāo)準(zhǔn)C允許將一個(gè) 結(jié)構(gòu)體變量 直接賦值給另一個(gè) 具有相同結(jié)構(gòu) 的 結(jié)構(gòu)體變量 。 2 如果成員本身又屬一個(gè)結(jié)構(gòu)體類型,則要用若干個(gè)成員運(yùn)算符,一級(jí)一級(jí)地找到最低的一級(jí)的成員。只能對(duì)最低級(jí)的成員進(jìn)行賦值或存取以及運(yùn)算。例如,對(duì)上面定義的結(jié)構(gòu)體變量 student1,可以這樣訪問各成員: student1. student1. 注意:不能用 來訪問 student1變量中的成員 birthday,因?yàn)?birthday本身是一個(gè)結(jié)構(gòu)體變量。 3.對(duì)成員變量可以像普通變量一樣進(jìn)行各種運(yùn)算(根據(jù)其類型決定可以進(jìn)行的運(yùn)算)。 例如: =; sum=+; ++。 ++。 由于 39。.”運(yùn)算符的優(yōu)先級(jí)最高,因此 ++是對(duì) ,而不是先對(duì) age進(jìn)行自加運(yùn)算。 4.可以引用成員的地址,也可以引用結(jié)構(gòu)體變量的地址。如: scanf( % d”, amp。); (輸入 ) printf( ? %o”, amp。student1); (輸出 student1的首地址) 但不能用以下語句整體讀入結(jié)構(gòu)體變量,如 scanf(“%d ,% s,% c,%d ,%f ,%s”,amp。student1)。 結(jié)構(gòu)體變量的地址主要用于作函數(shù)參數(shù),傳遞結(jié)構(gòu)體變量的地址。 結(jié)構(gòu)體變量的初始化 過去許多C版本規(guī)定 , 只有當(dāng)結(jié)構(gòu)體變量為全局變量或靜態(tài)變量時(shí) , 才能進(jìn)行初始化 。 不能對(duì)動(dòng)態(tài)局部變量進(jìn)行初始化 。 新版本無此限制 。 一 、 對(duì)外部存儲(chǔ)類型的結(jié)構(gòu)體變量進(jìn)行初始化 。 [ 例1 1. 1 ] struct student { long int num; char name[ 20]; char sex; char addr[20 ]; }a= {89031, ? Lilin”,?M?,“123beijing Road”}。 main) { printf(”No .: %ld\nname: %s\nsex: %c\n address: %s\n, , , ,)。 } 運(yùn)行結(jié)果如下: N0:89031 name:LiL in s ex:M address:123 beijing Road 二、對(duì)靜態(tài)存儲(chǔ)類型的結(jié)構(gòu)體變量進(jìn)行初
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1