第十五讲 结构体和共用体.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
注意区分: “共用体”:各成员占相同的起始地址,所占内存长度等于最长的成员所占内存。 “结构体”:各成员占不同的地址,所占内存长度等于全部成员所占内存之和。 * 二、共用体变量的引用 只能引用共用体变量的成员,如、   union data a;    a.i;   a.ch;   a.f; * 三、共用体类型数据的特点 1、共用体变量中的值是最后一次存放的成员的值,如:      a.i = 1;     a.ch = a;     a.f = 1.5; 完成以上三个赋值语句后,共用体变量的值是1.5,而a.i=1和a.ch=‘a’已无意义。 * 2、共用体变量不能初始化,例、     union data     {      int i;      char ch;      float f;     }a={1,a, 1.5}; * 设有若干个人员的数据,其中有学生和教师。学生数据包括:姓名、号码、性别、职业、班级。教师数据包括:姓名、号码、性别、职业、职务。如图、     分析:学生数据的class(班级)和教师数据的position(职务)类型不同,但在同一表格中,使用“共用体”数据结构。 * 枚举类型 如果一个变量只有几种可能的值,可以定义为枚举类型。 “枚举”:将变量可能的值一一列举出来。变量的值只能取列举出来的值之一。 * 用关键字enum定义枚举类型:例、 enum weekday {sun, mon, tue, wed, thu, fri, sat}; weekday是枚举类型名,可以用于定义变量, 如、enum weekday workday, week_end;     workday = mon;    week_end = sun; sun、mon、....、sat称为“枚举元素”或“枚举常量”。 * 说明: 1、枚举元素是常量。在C编译器中,按定义的顺序取值0、1、2、...。   例、   weekday = mon;   printf(%d, weekday); 输出整数1。 2、枚举元素是常量,不是变量,因此不能赋值。   sun = 0; mon = 1;  但在定义枚举类型时,可以指定枚举常量的 值,如、   enum weekday {sun=7, mon=1, tue, wed, thu, fri, sat};  此时,tue、wed、...的值从mon的值顺序加1。如,tue=2。 * 3、枚举值可以作判断,例、   if (weekday == mon)....   if (weekday sun).... 4、整型与枚举类型是不同的数据类型,不能直接赋值,如、   workday = 2; /* workday是枚举类型 */  但可以通过强制类型转换赋值,如、     workday = (enum weekday)2; *  口袋里有红、黄、蓝、白、黑五种颜色的球若干个。每次从口袋中取出三个球,打印出三种不同颜色球的可能取法。 分析:球的颜色只可能取五种值,用枚举类型变量处理。 * 用typedef定义类型 一、概念 关键字typedef用于定义一种新的数据类型,它代表已有数据类型,是已有数据类型的别名。例、    typedef int INTEGER;    typedef float REAL; 定义新数据类型INTEGER,它代表已有数据类型int。 定义新数据类型REAL,  它代表已有数据类型float。 通过上述定义后,以下两行等价:    int   i, j ; float a, b;    INTEGER i, j;REAL a, b; * 二、典型用法: 1、定义一种新数据类型,专用于某种类型的变量,使程序更清晰明了。 例1、typedef unsigned int size_t  size_t size; /*定义size为无符号整型变量*/ 例2、typedef int COUNT   COUNT i,j; * 2、简化数据类型的书写。 例3、typedef struct    {     int month;     int day;     int year;    }DATE ;     DATE birthday;    DATE *p;    DATE d[7]; 例4、typdef unsigned int UINT;    UINT i,j; * 三、定义新类型的更一般形式: (1)typedef int NUM[100]; /*申明NUM为整型数组类型 */    NUM n;

文档评论(0)

精品报告 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档