第05章 结构体与共用体黑体.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文档。上传文档
查看更多
第05章 结构体与共用体黑体

5.5.2 共用体变量的定义和引用 对于共用体变量的定义: union data { int i; char ch; float f; }a; 成员的引用: a.i a.ch a.f     共用体类型的特点 void main( ) { union data { int i; char ch; float f; }a; a.ch=65; a.i=28; printf(i=%d\n,a.i); printf(ch=%c\n,a.ch); printf(f=%4.1f\n,a.f); } 对共用体中的i成员赋值,之前对成员ch赋值不再起作用,此时仅成员i起作用,其余成员不起作用。 共用体变量和其各成员的地址均是一样的。对共用体变量不能初始化,不能对共用体变量名赋值。 5.6 枚举类型 一个星期有7天,分别是: 星期1,星期2,星期3,星期4,星期5,星期6,星期天 枚举:将变量所有可能值列举出来,变量的值只限于列举出来的值的范围内。 enum weekday {sun, mon, tue, wed, thu, fri, sat}; enum weekday workday, week_end; enum weekday {sun=7,mon=1,wed,thu,fri,sat}; * 枚举类型定义, 枚举类型名为 enum weekday 枚举元素,枚举常量 枚举元素按常量处 理,故不能对其赋 值。其值是按其定 义时的顺序,分别 为0,1,2,3... 定义中,sun=0, mon=1,tue=2... 枚举变量定义 enum weekday {sun,mon,tue,wed,thu,fri,sat}; enum weekday workday,weekend; workday=mon; workday=1; workday=(enum weekday)1; workday=mon; workday=(enum weekday)(7-3); 5.7 用户自定义类型 typedef int INTEGER; typedef long double LD; typedef struct { int month; int day; int year; }DATE; DATE birthday; DATE *p; typedef int NUM[100]; NUM n; * 声明一个新类型名方法: 先按定义变量的方法写出定义体 将变量名换新类型名 在最前面加上typedef 然后可用新类型名去定义变量 typedef 说明: 用typedef可声明各种类型名,但不能用来定义变量 用typedef只是对已经存在的类型增加一个类型名(“取别名”); typedef与#define有相似之处; 当不同源文件中用到同一类型数据时,常用typedef声明一些数据类型,把它们单独放在一个文件中,然后在需要用到它们的文件中用#include命令把它们包含进来; 使用typedef有利于程序的通用与移植。 5.8 程序设计举例 例5-11 已知某年的元旦是星期几,打印该年某一月份的日历表 #include stdio.h typedef struct { int year,mon,day; enum weekday {nun,mon,tue,wed,thu,fri,sat}week; }daily; ?void main( ) { daily days;  printf(Which year?); scanf(%d,days.year); /* 哪年日历*/ printf(year %4d,Month 1,day 1 is weekday?\n,days.year); printf(-Sun, 1-Mon, 2-Tue, 3-Wed, 4-Thu, 5-Fri, 6-Sat:); scanf(%d,days.week); days.mon = days.day = 1; montable(days); } * montable(daily d) { int i, s, ds,t; daily md; md.year = d.year; md.day = 1; printf(Which month?); scanf(%d,md.mon); /* 查看当年哪月日历表 */ t=(md.year%4==0 md.year%100!=0 || md.year%400==0)?29:28; for(s=0, i=1;i=md.mon; i++) { switch(i) { case 1: case

文档评论(0)

xyz118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档