11 第十一章 结构体与共用体

更新时间:2023-05-21 18:09:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第十章一

结构体 构体结的声、明结构变体的量义以及它定们的别区 结 构数组体的定义、初化始应及用 向结指体变构以及量指结向构数组的指针体 共 用体声的明其及用引方式 枚举型 声明及其的用方式 引 户用自义定型类

结构的定义体 构结 结体构的体应用结构体变量 结体构组 结数构指针体结构体变量 结构体与类型的区别

结构 体 与 共 体用共用体的定 义共用 体用共体量变共用 的体应 结构用与体共体用区的别 共用体数组共用 体指 枚举针的义定 枚举型 户用自义定类型枚 举应用 共用的体量变与 结构类 型的体别区

念的概导出实际应在用,常常需将中同不类型数的组合据一 个成机的有整体这。数据些是相联互的。系一个如学 生的有信息:关

nmuna e msex 10100 iL inmM aeg 18adrd Dalian若使用多个变量则它,之们无间系联;若使用组数, 们又它是不一同类型。必须一种新有数类型据,它既 可容纳不同型类子的,又能项将子各项联成一体。 系就这是构体结型。类数结构据描上述信述息。

什么是结体?构构体结是一组不类型同变的的量合。集(这些量叫成员。) 这变是C言语提的又供种一户自定义用、含的多种有 型成类的员新类型是。又一语言种级数据构。结 同不数于组的,是构结名体不字是再地址其;成组成员可 以类型各不同相即不,等再小;大只有储是存连续的。 另,外每个成员拥都有己的存自储空间由。是于型,所以不占用存储空类,间只而是给结体构 量提供了变内布存局的模版。

构体结声的声明方明式:关 键 s字rutct结构 名 { 新体型类 结构名体员成表 列类型块模 } 一;要有分定号

结构的体成可以员变量、数组、指针、甚是至 其是它结体构量,变但们已它成组一个了可不 分的整割 。体

如例 stru:c tstudnt e{char n ame20][ ;it idn f;lot chineaes ;lfat oenlisgh ;fola taeravg; };e结构体的储存模式ame[0n] //构结体名[1] ……ch ar

/结构体/成员 1[9]/ ../ d ini // .. ftoatlc ihens e/ /.. / /. otngeisl hveeagre float.

结构体变量定的义结构体变量的定有义三方种:式1.声先明结构类型体再,定义该型类量:变 trust ctsudnt setu1,stu;结构体类2名

结构体变型量名如同: in于数据类t型

a1a,2; 变名量

样这便于修做,改便于使用。

.声明2结体构型类时同定义结构变量体 str:ctudat e结构体类 名 型 i{t ndya int mo;nht 结;构变量名 体nity ar;e} t mi1e,tiem2;还可以再续定义结构继体变量:st uctrd ae ttme3iti,e4m;

.声3明无名构体结型变类:量 trucst 结构体型类无{名c arh anm[20e];/ *生学名姓* cha/r exs / ;*性*别/ onlgn u;m */学号*/ float sc reo3[;] / 三科

*考试成绩*/ }p reons,pe1rsn2o;构结体量有变名该方法由于声的明构体类型无结名,所除直接 以定的变量义,外不再能义其定他构结变量了体, 这将限结制构体量变的成。生。

可符用号量常来表代个结一构体型,如类#:deifne TUSDETN struc ttsduet nSTUDEN T{ ni num;tchar anme[20] ;样这可,直用宏接名SUDTNE char seT; x定来义量变,: S如TUDNETst duent1 ,stuednt2; ni ateg 不;再写关必键st字rut。 char cadrd3[];0这是C 手的,C法++不需要。 再};

关于结体类型声构明 两个结构 体声中的明员成型类名称、顺序、、

个完数一全致,它是同们类一吗型 ?stuctrA st uctrB {{ nita in;ta; hcarc; cahrc ; flota f;fl aot f; ;}} ;什么为

声明和定义的区?别 “结体的构声明是”创了新建类型;的没有占内存用间,空仅是给结构仅变量提 供体内了存布局样的,板能保存不值。 结“体构量变定的义是”建了新创量变;

占用要内存空,可间保以存量的变分各量的值, 其存内局完布全遵类照提供的型板样。们它的别是差“型之值差虚,之实别”

。结体变量构的用使使用式形: <构体结量名>变. <成员 >名若已定 的义构结类体型变及量下: s如rtct date u员运成符的算 义含是“的 {” in tady i;n mtotnh;i t neary; t}mei,1tmi2;e结构变体量和成员皆 不其可单独使。

则有:用t mie.d1y=a1;2time2 da.y=;4 imte1.month=; 2itme2mo.nht1=;t ie1my.aer200=;4 itme.2yer=a;6i t n=tame1iday. p;irnf(“t%\dn”,tme2.yeir);a

结构变量体的成员不可独使单。用int =ada;y/ 错误/ 构体变结也量可不整体使 ! 用in t=atie1m; // 类不符 p型inrf(t“%”,tdmei2; )// 型类符不 rintp(f“%d,d %%d,”,tmi2)e /;没有分/ sc量afn“(d%,d,%d% ”&,tmie)2 /;没/分量 但可以赋值: d有teat1,t ; 22 = t1t /;/类型 一

致结

构变量的初体化始trustc tudsne /t*声 明学生结构体型*类/ {cah ramn[2e]0 / ; *生姓学* 名/ch arse ;x / 性**别 / lnognum / *;学号 / float *sorec[3]; / * 科三试成绩考 /*} ;变 量初化 始tsrct utsuedt ntus={" liping"'f',9,0571,48.959,7.,945;}

结构

变体量三的定义形式种均可时同始初化。成初完化后始,各成的值分员为:别s t .un m ae “=l ipi n g ” 、 tsu .se = 'x f 、's t . un um = 9 075 1、 s4 ut.s c o r [ 0e ] = 8 9.5 、 s tu .s c ro e 1 ][ = 79 4.、s t u. s c ro [e 2 ]= 5

9tus

构体结类型声的明臵位 若构体结类型明在全局位声,臵在则其后的所有数函中有皆效这叫,局全型;类 如果结构体类型声明在函内部,则该函数数

外无法使之用此构体结类,这型叫部类局.

型于关结体构的意注项事 既然结构是体新创的建类型所,声以结明

构体时切不以可其成员设定值对; 结构体声明可时以嵌套

声明构结体 ;明声的构结可以体无名,嵌内结构的体可 也以名无; 结对构变量的体问访能只使用员成不可, 将以变量体使用整;

结构体的嵌套声明嵌声明套:

声在结构明体内又包含了另(内一层)结体构声的明 由。于外层构结体给 外层 内层结体加了一构 类层屏障型,所以 其地方它不能用内层 结体创建变构量了。

sructt tusedn { itntnu ; mhacrn me[a02;]c ar hsex i;t nga;e tsuctr adt e{ ni tmntoh 内;层int d y; intaye ar ; }irthbayd;f loatsc roe ;hcar dadr[30] ;}st1u,tus2

结构体类型;怪的象现 两 结个体声构明的中员成型类、名、称个数完一全, 致只顺是序不,同它会一们大小吗?st样ucrtA ch{ra c ;it a; nloftaf; ch ra c ;; }sruct t B {cah cr; cha r;c nt i; float a; f};

什么为?编器译是字长按整数的倍分配空间的

本文来源:https://www.bwwdw.com/article/05m4.html

Top