C语言中-结构体和联合体使用.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言中-结构体和联合体使用

联合体 联合体是一种特殊形式的结构体,因此遵循与结构体相似的语法。 联合体的定义格式: union item { int m; float x; char c; }code; 联合体 联合体与结构体的区别是存储形式 在结构体中,每个成员都有自己的存储空间 在联合体中,所有成员使用相同的存储空间 因此,联合体一次只能存储一个成员。 联合体存储空间的大小,由占用空间最大的成员类型决定。 在联合体中,当某个成员被赋予一个新值后,该值将替代掉前一个成员的值。 例如以下将产生错误的输出: code.m = 279; code.x = 2344.56; printf(“%d”,code.m); 因此,联合体初始化时,只能对第一个成员进行初始化,例如: union item abc = {100}; 而以下声明是非法的: union item abc = {10.03}; 结构体的大小 使用一元运算符sizeof可以计算数据类型或者变量的大小。结构体也适用。 例如: sizeof (struct x); struct x y; sizeof (y); struct x z[100]; int sizeofarray = sizeof (z) / sizeof (struct x); 第十章 结构体与联合体 结构体的定义、声明、初始化 结构体成员的访问 结构体变量的复制与比较 结构体与数组、函数 联合体 概述 问题: 一个变量可以表示一种数据类型的数据项。 一个数组可以表示一组相同类型的数据项。 如何表示一组不同类型的数据项呢? 例如:如果我们需要保存以下信息作为一个信息整体: 一个大小为20的字符数组 一个整形数字 一个浮点型数字 概述 为满足以上应用需求,提出结构体的概念 结构体是一种机制 能够封装不同类型的数据 用于处理一组逻辑相关的数据项 以一种有意义的方法来组织复杂的数据 联合体是一种特殊的结构体 为节省存储空间而存在 几乎没有什么应用机会 结构体的定义 我们可以定义以下格式的结构体 struct man { char job[20]; int old; float height; }; 该结构体有3个数据字段,称为结构体成员 每个成员可以属于不同的数据类型 man是结构体的名字,称为结构体标记符 定义结构体以后,可以使用标记符来声明属于该结构体的变量 结构体的定义 结构体定义的格式如下: struct 结构体标记符 { 数据类型 成员变量1; 数据类型 成员变量2; …… }; 注意: 结构体一般以分号结尾 整个结构体是一条语句 每个成员都有自己的名称和数据类型 结构体标记符可以在随后的程序中声明结构体变量 声明结构体变量 定义了结构体,就可以声明这种类型的变量 结构体变量的声明格式 struct 结构体标记符 变量名1,变量名2; 例: struct man LiangYe; 结构体成员本身不是变量,定义结构体时不会它们分配存储空间 当声明结构体变量时,将为结构体变量分配存储空间。 声明结构体变量 可以将结构体的定义与变量的声明结合在一起,例如: struct man { char job[20]; int old; float height; } LiangYe; 此时,结构体的名字可以省略,例如: struct { char job[20]; int old; float height; } LiangYe; 访问结构体成员 LiangYe是一个结构体变量,它有多个成员,如何引用,如何赋值呢? 在结构体中,变量与成员之间的关系使用成员运算符‘.’来建立。 如: LiangYe.old LiangYe.height 对变量的成员赋值,可以使用 LiangYe.old = 29; LiangYe.height = 1.80; 访问结构体成员 例:定义一个结构体,保存从键盘输入每个人的信息(姓名、参加工作时间、工资),保存在结构体中,然后输出。 struct personal { char name[20]; int day; int month; int year; float salary; } main() 访问结构体成员 { struct personal person; scanf(“%s %d %d %d %f”, person.name, person.day, person.month, person.year, person.salary); printf(“%s %d %d %d %f\n”, person.name, person.day,

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档