《計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第14章結(jié)構(gòu)體共用體和用戶自定義類型》由會員分享,可在線閱讀,更多相關(guān)《計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第14章結(jié)構(gòu)體共用體和用戶自定義類型(39頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,本章重點(diǎn),14.1,用,typedef,說明一種新類型名,14.2,結(jié)構(gòu)體類型,14.3,共用體,第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型,芯助鯨盛駕和賒敖啪毯伍吩螢薛惜冗叢椽蠢概韋沉哭惺伯描箭瀝等埠冠垢計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型,14.1,用,typedef,說明一種新類型名,語言允許用戶自己定義類型說明符,也就是說允許由用戶為數(shù)據(jù)類型取,“,別名,”,。類型定義符,typedef
2、,即可用來完成此功能,它可以語言的基本數(shù)據(jù)類型取,“,別名,”,,也可以為用戶自定義的結(jié)構(gòu)類型取,“,別名,”,。例如,,typedef int INTEGER,這以后就可用,INTEGER,來代替,int,作整型變量的類型說明了。例如:,INTEGER a,b;,它等效于:,int a,b;,募渡揣匙陣毋筆負(fù)旁詫酷鳴倆蛀寵飄垂豐餃云聰倪獻(xiàn)娶霖耘疇揚(yáng)卸祝喘牟計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型,用,typedef,定義數(shù)組類型、指針類型、結(jié)構(gòu)類型將帶來很大的方便,不僅使程序書寫簡潔,
3、而且增強(qiáng)了可讀性。例如:,typedef char NAME20;,表示,NAME,是字符數(shù)組類型,數(shù)組長度為,20,。然后可用,NAME,說明變量,如:,NAME a1,a2,s1,s2;,完全等效于:,char a120,a220,s120,s220,稼頃閡齋蛇王諷惡銘盼馴簿諒要吏稽捉景纂熙伸蛻纏傘箔暖洽疆蘋錦署綏計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型,typedef struct stu,char name20;,int age;,char sex;,Student;,定義,St
4、udent,表示,struct stu,的結(jié)構(gòu)類型,然后可用,Student,來說明結(jié)構(gòu)變量:,Student body1,body2;,捐澤漫逸奮靴累貉恬盎江軍壯茹抿閨逮布拌濃乎貯芳貼邦縫亞藍(lán)盔癰堪犢計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型,typedef,定義的一般形式為:,typedef,原類型名 新類型名,有時(shí)也可用宏定義(,#define,)來代替,typedef,的功能,但是宏定義是由預(yù)處理完成的,而,typedef,則是在編譯時(shí)完成的,它并不只是作簡單的字符替換。,駿丈汽銘
5、踐笆鍍廂眠訴松肘秋冤壹霜洼黔郊喀蕉敏奎昌蕩五夢甥撤彥睬嘗計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型,14.2,結(jié)構(gòu)體類型,C,語言的基本數(shù)據(jù)類型有整型,實(shí)型,字符型等,在實(shí)際問題中,把一個(gè)對象抽象成數(shù)據(jù)來表示時(shí),往往需要一組不同基本數(shù)據(jù)類型的組合。,棍艘羞醬慧剿炸稼西轍披裙鬃搏賃鎊低商揮鍛以硫恫啊斬汁律沒際糯榷污計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型,14.2.1,結(jié)構(gòu)體類型的說明
6、,結(jié)構(gòu)體類型說明的一般形式是:,struct,結(jié)構(gòu)體標(biāo)識名,類型名,1,結(jié)構(gòu)成員名表,1,;,類型名,2,結(jié)構(gòu)成員名表,2,;,類型名,n,結(jié)構(gòu)成員名表,n,;,;,惹繼榴椒甕淆逆錯(cuò)釬返梭裸琢叼苞逸項(xiàng)虹藝僻鑿峻氏巫戒日庇棗召摟滔軌計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型,其中,struct,是關(guān)鍵字,是結(jié)構(gòu)體類型的標(biāo)志。,“,結(jié)構(gòu)體標(biāo)識名,”,和,“,結(jié)構(gòu)成員名,”,都是用戶定義的標(biāo)識符。其中,“,結(jié)構(gòu)體標(biāo)識名,”,是可選項(xiàng),在說明中可以不出現(xiàn)。成員表列由若干個(gè)成員組成,由一對大括號括起
7、來,每個(gè)成員都是該結(jié)構(gòu)的一個(gè)組成部分。對每個(gè)成員也必須作類型聲明,其形式如下:,類型說明符 成員名,;,結(jié)構(gòu)體成員名表中可以含有多個(gè)同類型的成員名,它們之間用逗號分隔。例如:,struct student int math score,;english score,sum;,結(jié)構(gòu)體中的成員名可以和程序中的其它變量同名;不同結(jié)構(gòu)體中的成員也可以同名。,拳豐寐柵毛箭耐蠶侵幕澆歉匝瀉承廄彌墾姬除獻(xiàn)躇郭雇琵廬佐陸砒宵凄拯計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型,在成員列表中,類型名,1,類型名,
8、n,不僅可以是簡單數(shù)據(jù)類型,也可以是構(gòu)造類型,所以也可以是某種結(jié)構(gòu)體類型。這時(shí)稱為結(jié)構(gòu)體的嵌套。嵌套時(shí)允許內(nèi)嵌結(jié)構(gòu)體成員名與外層成員的名字相同。例如:,struct student,char name10;,char sex;,struct date birthday;,float score5;,;,熙鳴吃芬卵蔫皋柄豢酞鋇獵穿幟滑蓮色房錄傀銷頌零丑燥碩震沼鳴妖祈沽計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型,以上說明中,,birthday,成員的類型,struct date,是一個(gè)已經(jīng)說明
9、過的結(jié)構(gòu)體類型。若事先沒有說明這一類型,則以上結(jié)構(gòu)體類型說明可改寫成如下:,struct student,char name10;,char sex;,struct,int year;,int month;,int day;,birthday;,float score5;,;,稱氮裸凝珍績披雌癌濾鏈蛾掇蜒慮籠湯郡驅(qū)萊戒歡膨把咽姿疥澤沽疹引難計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型,14.2.2,結(jié)構(gòu)體類型的變量的定義,定義結(jié)構(gòu)類型變量由以下四種方法:,1,先定義結(jié)構(gòu),再說明結(jié)構(gòu)變量。例如
10、:,struct student,int number;char name31;,short age;char sex;,char grade;char address101;,;,struct student boy1,boy2;,豢敬千校撕翠曾菇煽耍龍慎老蟹必?cái)嚪瓯K秒甄塞惜蝕諄齒隊(duì)幌沉慫熄鶴磚計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型,2,在定義結(jié)構(gòu)類型的同時(shí)說明結(jié)構(gòu)變量。這種形式說明的一般形式為:,struct,結(jié)構(gòu)名,成員表列,變量名表列,;,例如:,struct student,
11、int number;char name31;,short age;char sex;,char grade;char address101;,boy1,boy2;,臻默埃旭巋撈噸捍男燈漓測素鈕醉盲走掉筍戶芽堵馳帆墳畦磷誰填寥描乙計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型,3,直接說明結(jié)構(gòu)變量。即在結(jié)構(gòu)變量定義中省去了結(jié)構(gòu)類型名,而直接給出結(jié)構(gòu)變量。一般形式為:,struct,成員表列,變量名表列,;,例如以上結(jié)構(gòu)中把,student,省略,,struct student,boy1,boy
12、2;,諒盟僚泥輔譬攝千可儀兼擾啊惡荔千蘿棗靛穗摻琶柏謾孤唉允搞為遼高豪計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型,4,使用,typedef,說明一個(gè)結(jié)構(gòu)體類型名,再用新類型名來定義變量。例如:,typedef struct,char ame2;,char sex;,struct date birthday;,float sc4;,STREC;,STREC boy1,boy2;,此處,STREC,是一個(gè)具體的結(jié)構(gòu)體類型名,它能夠唯一的標(biāo)識這種結(jié)構(gòu)體類型。因此,可用它來定義變量,不可再寫關(guān)鍵字
13、,struct,。,孟娶序者艇餃販救寞搔已盯萊駐桓瞧紗乙治嘎纜鹼措難蹋馭輩謬劫琴吁啃計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型,14.2.3,結(jié)構(gòu)體類型的變量的引用,表示結(jié)構(gòu)變量成員的一般形式是:,結(jié)構(gòu)變量名,.,成員名,例如:,boy1.number,即,boy1,的學(xué)號,boy2.name,即,boy2,的名字,結(jié)構(gòu)變量的成員,與相同類型的普通變量并無區(qū)別,可以像普通變量一樣參與各種運(yùn)算,這根據(jù)其類型決定。例如:,boy1.number=boy2.name,;,銘曉攫粒蘸尚縛咱慫脊窖臼
14、挑訪淤亂組警耙凋囚撮泣稀它丈謙爾橇何獅盜計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型,相同類型的結(jié)構(gòu)體變量之間還可以進(jìn)行整體引用賦值,例如:,struct,char name10;,int num;,per1,per2=,“,WUTING,”,23;,執(zhí)行賦值語句:,per1=per2;,后,,per2,中每個(gè)成員變量的值都賦給了,per1,中對應(yīng)的同名成員。這種賦值方式很簡潔,但必須保證賦值號兩邊的結(jié)構(gòu)體變量類型相同。,汐吶珠犬際聳雷隅闖瑣勝鎮(zhèn)膳七恨感烷茲屢擯娟串鈴脾卵刻糠疏哆巫根愚計(jì)算機(jī)
15、等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型,14.2.4,結(jié)構(gòu)體類型變量的賦值和初始化,結(jié)構(gòu)變量的賦值就是給各結(jié)構(gòu)成員賦值??捎幂斎胝Z句或賦值語句來完成。例如:,#include stdio.h,int main(void),struct Student,int number;,char name31;,short age;,char sex;,char grade;,boy1,boy2;,貢溯鞘諱墮鵬造瘤延告葷聰車渾傷倘油愿賓愧罐慧剃衙桂瓦彤就渤拍緞熾計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章
16、 結(jié)構(gòu)體、共用體和用戶自定義類型計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型,boy1.number=1461;,printf(input name:);,scanf(%s,boy1.name);,printf(input age:);,scanf(%d,boy1.sex=m;,boy1.grade=5;,boy2=boy1;,return 0;,楚藍(lán)吼循看賃勛蕉剮搐矢汲盛客黎惺鍵銑糜澗求痔巫滯窯伴葷嘛識歉旅謄計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型,程序運(yùn)行時(shí)輸入:,input name:zhang,input age:12,傀抉籍題頂靈獲璃饞饒亭墩檸暮知嵌獨(dú)茬釜躲伎確堅(jiān)祈閑分屠勇鴦鉸傷艇計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型計(jì)算機(jī)等級考試二級語言程序設(shè)計(jì)第,14,章 結(jié)構(gòu)體、共用體和用戶自定義類型,和其他類型變量一樣,對結(jié)構(gòu)變量可以在定義時(shí)進(jìn)行初始化賦值。,#include stdio.h,int main(v