高级语言程序设计教学课件 作者 课件11.ppt

高级语言程序设计教学课件 作者 课件11.ppt

ID:51964299

大小:166.00 KB

页数:12页

时间:2020-03-26

高级语言程序设计教学课件 作者 课件11.ppt_第1页
高级语言程序设计教学课件 作者 课件11.ppt_第2页
高级语言程序设计教学课件 作者 课件11.ppt_第3页
高级语言程序设计教学课件 作者 课件11.ppt_第4页
高级语言程序设计教学课件 作者 课件11.ppt_第5页
资源描述:

《高级语言程序设计教学课件 作者 课件11.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、构造数据类型,也叫共用体用途:使几个不同类型的变量共占一段内存(相互覆盖)联合类型定义定义形式:union联合名{类型标识符成员名;类型标识符成员名;…………….};例uniondata{inti;charch;floatf;};fchi类型定义不分配内存第十一讲联合类型形式一:uniondata{inti;charch;floatf;}a,b;形式二:uniondata{inti;charch;floatf;};uniondataa,b,c,*p,d[3];形式三:union{inti;charch;floatf;}a,b,c;联合变量

2、的定义fchifchiab联合变量定义分配内存,长度=最长成员所占字节数联合变量任何时刻只有一个成员存在联合变量引用引用方式:例a.i=1;a.ch=‘a’;a.f=1.5;printf(“%d”,a.i);(编译通过,运行结果不对)引用规则不能引用联合变量,只能引用其成员联合指针名->成员名联合变量名.成员名(*联合指针名).成员名uniondata{inti;charch;floatf;};uniondataa,b,c,*p,d[3];a.ia.cha.fp->ip->chp->f(*p).i(*p).ch(*p).fd[0].id

3、[0].chd[0].f联合变量中起作用的成员是最后一次存放的成员例union{inti;charch;floatf;}a;a=1;()不能在定义联合变量时初始化例union{inti;charch;floatf;}a={1,’a’,1.5};()可以用一个联合变量为另一个变量赋值例floatx;union{inti;charch;floatf;}a,b;a.i=1;a.ch=‘a’;a.f=1.5;b=a;()x=a.f;()例将一个整数按字节输出0110000101000001低字节高字节0100000101100001ch[

4、0]ch[1]运行结果:i=60501ch0=101,ch1=141ch0=A,ch1=amain(){unionint_char{inti;charch[2];}x;x.i=24897;printf("i=%o",x.i);printf("ch0=%o,ch1=%och0=%c,ch1=%c",x.ch[0],x.ch[1],x.ch[0],x.ch[1]);}结构类型与联合区别:存储方式不同structnode{charch[2];intk;}a;unionnode{charch[2];intk;}b;achkbchk变量

5、的各成员同时存在任一时刻只有一个成员存在联系:两者可相互嵌套例结构类型中嵌套联合namenumsexjobclasspositionLiWang10112086FMST501prof循环n次读入姓名、号码、性别、职务job==‘s’真真假假读入class读入position输出“输入错”循环n次job==‘s’真假输出:姓名,号码,性别,职业,班级输出:姓名,号码,性别,职业,职务job==‘t’struct{intnum;charname[10];charsex;charjob;union{intclass;charposition[1

6、0];}category;}person[2];例联合中嵌套结构类型,机器字数据与字节数据的处理0001001000110100低字节高字节0011010000010010lowhigh0x12340001001011111111低字节高字节1111111100010010lowhigh0x12ffstructw_tag{charlow;charhigh;};unionu_tag{structw_tagbyte_acc;intword_acc;}u_acc;word_accbyte_acc.lowbyte_acc.highu_acc例6.

7、13编程,输入一个长整型的整数,分别取出该数的各字节的值。分析:定义一个联合类型如下所示:uniondata{chars[5];longn;};#includeuniondata{chars[5];longn;};voidmain(void){uniondatax;inti;printf(“输入一个长整数:”);scanf(“%lx”,&x.n);printf(“各字节取值如下:”);for(i=0;i

8、);}例6.14编程存放学生的下述信息:姓名、学号和当前住址,其中学生当前 住址有两种情况:在校住宿学生用学校地址(楼房名和房间号),非在校 学生用家庭住址(街道号、街道名和城市名)。并输出指

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。