已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章结构 联合和枚举 8 1类型定义概念 由用户自己定义数据类型方法 非结构型定义 类型的引用 和结构类型定义8 2非结构型定义例 将integer也定义成inttypedefintinteger在程序中 inta b c 和integera b c 作用相同例 将ul定义为unsignedlongtypedefunsignedlongul 以少代多 8 3结构 结构类型定义 把不同的数据类型或多个数据定义成一个结构 该结构 类型 称为结构体 8 3 1定义结构例如 定义一个 学生 属性的结构体 structstudent intnum charname 10 intage charsex floatscore charaddr 30 m n 说明 其中student是由用户定义的结构体类型名 在数据类型中有增加了一个类型 其中的成员称作域名 8 3 2说明结构变量 结构类型变量定义方法 例 将a b c说明成student结构体类型方法一 用结构体类型进行说明structstudenta b c 方法二 先用宏定义 definestudentstructstudentstudenta b c 方法三 定义结构体时就说明例 将m n说明成teacher结构体类型structteacher charname 10 intage charsex charaddr 30 m n 说明 1 结构体中的成员称为域名或分量 2 结构体和宏定义常常以头文件方式使用 3 每一个成员需要进行类型说明 4 结构体中的成员名可以与普通变量名相同 但使用的方式不同 5 结构体中的成员还可以是另一个结构体变量 6 可以使用sizeof 函数测出每一个变量 类型 float等 等占用内存的字节数 8 3 3结构体成员结构体中的成员还可以是另一个结构体变量structpat unsignedlongzip 邮编char addr 地址unsignedlongtel structaddress book char name longnum patdepart 单位pathome 家庭 a 8 3 4访问结构体变量例 address booka s 10 a numa namea depart nums 3 nums 3 home tel8 3 5结构体变量的初始化 赋值 例 给变量赋值structstudent longintnum charname 10 intage charsex a 200705312 zhangli 18 w 例 给结构类型的数组变量赋值structstudent longintnum charname 10 intage charsex s 30 200205312 zhangli 2002 8 4结构体类型的变量输出例 使用scanf 给结构体数组类型赋值 输入三个学生的有关信息 然后输出程序为 structstudent longintnum charname 10 charsex s 3 main intk for k 0 k s k num cin s k name cin s k sex for k 0 k 3 k cout s k num n cout s k name n cout s k sex endl 例 结构体嵌套的输入输出structdate intyear intmonth intday structstudent longintnum charname 10 structdatebirthday s 3 main intk for k 0 k s k num cin s k name cin s k birthday year cin s k birthday month cin s k birthday day for k 0 k 3 k cout s k num cout s k name cout s k birthday year cout s k birthday month cout s k birthday day 8 5用结构指针变量代替结构体变量structstudent longintnum charname 10 charsex structstudenta 定义结构体变量structstudent p 定义结构体变量指针p p num引用a中的成员 方法一 p num引用a中的成员 方法二 8 6用结构指针变量代替结构体数组变量structstudent longintnum charname 10 charsex structstudents 30 structstudent p p s p num引用某一元素中的num成员 p num p num引用某一元素中的num成员后指针指向下一个 人 数组元素 例 用结构体类型指针变量完成上题structdate intyear intmonth intday structstudent intnum charname 10 structdatebirthday s 30 main intk structstudent p p s for k 0 k p num cin p name cin p birthday year cin p birthday month cin p birthday day for k 0 knum coutname coutbirthday year coutbirthday month coutbirthday day 8 7位域位域是以二进制形式定义结构成员 使用多少定义多少 8 7 1定义位域的方法例 structstudent char name unsignedintsex 1 unsignedintage 7 说明 在成员后使用 n即可 n指的是二进制位数 使用位域和不使用位域差2个字节 1位可表示1或0 8位可以表示0到128 8 7 2使用位域成员的方法与普通成员一样 注意1和0即可表示逻辑值 8 7 3使用位域注意事项位域成员必须是unsignedint 位域成员所占位数可任意 如果从新的字节开始 可以使用 unsignedint0 8 8联合 共用体 8 8 1联合的概念与定义不同的数据可以共用存储单元例 unionun intn charname floatx 其特点是所有成员具有相同的首地址 8 8 2联合体变量的定义联合体类型名变量名8 8 3联合体的使用通过变量使用例 una b a n 2003 a name hello b x 3 1415962 8 8 4联合体类型的特点共享内存单元每一时刻只能有一个成员起作用最后一次赋值的成员有效各成员的首地址相同联合体变量不能参加任何运算和初始化 8 9枚举8 9 1枚举类型的定义例 enumweekday sun 5 mon 1 tue wen thu fri sat 说明 可以直接改变成员的顺序 8 9 2枚举类型变量的说明方法1 直接枚举类型
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论