資源描述:
《結(jié)構(gòu)體與共用體》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、第11章結(jié)構(gòu)體與共用體本章主要考查結(jié)構(gòu)體類型、結(jié)構(gòu)體變量、結(jié)構(gòu)體數(shù)組、結(jié)構(gòu)體指針的定義和引用方法,結(jié)構(gòu)體類型變量的特點,以及共用體及枚舉類型的概念、定義和引用,并掌握己有類型定義別名的方法。一、考試要點1、結(jié)構(gòu)體(1)結(jié)構(gòu)體類型的定義結(jié)構(gòu)是一種“構(gòu)造”而成的數(shù)據(jù)類型,在使用之前必須先定義,然后才可能用來定義相應(yīng)的變量、數(shù)組等。定義如下:struct結(jié)構(gòu)名{成員列表;};例如:structstd{intnum;charname[10];floatsco;};定義的該結(jié)構(gòu)類型之后,這種類型在內(nèi)存中所占間為所有成員所占內(nèi)存之和。(2)結(jié)構(gòu)類型的說明說明結(jié)構(gòu)體變量有以下3種
2、方法:方法一:先定義結(jié)構(gòu)體,再說明結(jié)構(gòu)體變量structstd{intnum;charname[10];floatsco;};structstdstu1,stu2;方法二:在定義結(jié)構(gòu)體的同時說明結(jié)構(gòu)體變量structstd{intnum;charname[10];floatsco;}stu1,stu2;方法三:直接說明結(jié)構(gòu)變量struct{intnum;charname[10];floatsco;}stu1,stu2;(3)結(jié)構(gòu)變量的引用結(jié)構(gòu)變量成員的表示一般形式為:結(jié)構(gòu)變量名.成員名如:stu1.sco若成員本身又是一個結(jié)構(gòu),則必須逐級找到最低級的成員才可以使用,
3、一般形式為:外層結(jié)構(gòu)變量.外層成員名.內(nèi)層成員名如:stu1.birth.year(4)結(jié)構(gòu)變量和賦值和初始化結(jié)構(gòu)變量的賦值即是給各個成賦值,可用輸入輸出語句來實現(xiàn)。結(jié)構(gòu)變量的初始化是指在結(jié)構(gòu)變量說明的同時,給它的各個成員賦初值,初始化的格式為:struct結(jié)構(gòu)名{結(jié)構(gòu)成員列表;}結(jié)構(gòu)變量={初始數(shù)據(jù)表};(5)結(jié)構(gòu)指針變量的說明和使用結(jié)構(gòu)指針的說明形式為:struct結(jié)構(gòu)名*結(jié)構(gòu)指針變量名結(jié)構(gòu)指針變量訪問結(jié)構(gòu)變量各個成員的一般形式為:(*結(jié)構(gòu)指針變量).成員名或結(jié)構(gòu)指針變量->成員2、共用體(1)共用體類型的定義和共用體變量的說明其定義方法為:union共用體名{
4、成員表;};如:unionunit{intclass;charoffice[10];};共用體類型在內(nèi)存中所占空間等于成員中占空間最大的。共用體變量的說明的方法與結(jié)構(gòu)體變量的說明方法相同。(2)共用體類型變量的賦值和使用形式為:共用體變量.成員名3.枚舉類型枚舉類型的定義形式為:enum枚舉名{枚舉值表;};枚舉類型變量的說明與結(jié)構(gòu)體和共用體相同。4.類型定義符typedef用typedef來給已知類型取別名。如:typedefintINTEGER這樣,inta,b;與INTEGERa,b;的功能是一樣的.二、典型例題分析例10.1設(shè)有結(jié)構(gòu)體及其數(shù)組和指針變量的定義
5、語句struct{intx;}y[2],*p=y;則下列表達式中不能正確表示結(jié)構(gòu)體成員的是()(2005年1月份安徽省計算機水平考試二級《C語言程序設(shè)計》試題)A)(*p).xB)*(p+1).xC)y[0].xD)(&y[1])->x答案:B解析:.優(yōu)先級高于*,因此B相當于*((p+1).x),而p+1為地址,不能使用.來引用結(jié)構(gòu)體成員,則B錯誤例10.2以下語句中,指針p的data域正確的引用方式為()typedefstructmode{intdata;structnode*lchild,*rchild;}Btree;Btree*p;(2005年12月份安徽省
6、計算機水平考試二級《C語言程序設(shè)計》試題)A)p.dataB)p->dataC)(*p)->dataD)p[data]答案:B解析:p為指向Btree的指針,則引用data域方法為p->data例10.3unionstu{intI;floatt;inta[4]}x;則x在內(nèi)存中占用的字節(jié)數(shù)是()(2006年6月份安徽省計算機水平考試二級《C語言程序設(shè)計》試題)A)2B)4C)8D)14答案:C解析:int為2個字節(jié),float為4個字節(jié),數(shù)組a為4*2=8個字節(jié),union類型的變量所占字節(jié)數(shù)即為最長的域所占字節(jié)數(shù)。例10.4如有以下定義structperson{c
7、harname[9];intage;};structpersonclass[10]={“John”,17,”Paul”,19,”Mary”,18,”Adam”,16};根據(jù)上述定義,能輸出字母M的語句是()(2007年1月份安徽省計算機水平考試二級《C語言程序設(shè)計》試題)A)printf(“%c”,class[3].name);B)printf(“%c”,class[3].name[1]);C)printf(“%c”,class[2].name[1]);D)printf(“%c”,class[2].name[0]);答案:D解析:John和17為