欢迎来到天天文库
浏览记录
ID:58886037
大小:133.00 KB
页数:78页
时间:2020-09-30
《C语言程序设计ppt第10章ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言程序设计TheCProgrammingLanguage华中科技大学计算机学院曹计昌7/30/20211华中科技大学计算机学院*10.7联合10.7.1联合类型的定义与结构类似,联合类型也是一种构造类型。一个联合类型中包含有多个成员,这些成员共享共同的存储区域,但这些成员并不同时存在;联合存储区域的大小由各个成员中所占字节数最大的成员决定;在任何时刻,各个成员中只能有一个成员拥有该存储。除了用关键字union取代struct之外,联合类型的定义、联合变量的声明、以及联合成员的引用在语法上与结构完全相同。7/30/20212华中科技大学计算机学院如果有3个不同数据类型(char,sho
2、rt,long)的变量要分时共用一个共同的存储区域,则可以定义如下的联合类型:unionchl{charc;shorth;longl;};这里chl是所定义的联合类型的联合名(tag),它与union一起形成一个unionchl的联合类型。c、h、l是联合类型的成员。7/30/20213华中科技大学计算机学院10.7.2联合变量的声明、初始化及联合成员的引用定义了unionchl的联合类型后,可以通过:unionchlu;来声明一个unionchl类型的变量。也可以在定义unionchl联合类型的同时来声明相应的联合变量。如:unionchl{charc;shorth;longl;}v={ˊ
3、9ˊ};它在定义unionchl联合类型的同时声明了联合类型的变量v,并且对其进行了初始化。在不产生二义的情况下,往往简称联合类型的变量为联合。7/30/20214华中科技大学计算机学院联合变量的声明、初始化值得注意的是,联合变量的初始化与结构的初始化在形式上相同,都应该用花括号界定初值,但联合是一种特殊形式的构造类型的数据,在同一时刻它只拥有其中的一个成员。因此,初始化时只能对联合的第1个成员进行初始化。换言之,初值表中只能包含与第1个成员数据类型相同的一个初值。如上面例子中的v={'9'}。也可以:unionchlv={ˊ9ˊ},w={ˊaˊ};7/30/20215华中科技大学计算机学院
4、例10.12通过例子对联合的特性进行进一步分析。#include"stdio.h"unionchl{charc;shorth;longl;};voidshow(unionchl*pu);voidshow_memoy(unionchl*pu);7/30/20216华中科技大学计算机学院voidmain(void){unionchlu;printf("sizeofuis%d",sizeof(u));u.l=0x31323334L;show(&u);show_memoy(&u);u.h=0x3638;show(&u);show_memoy(&u);}7/30/20217华中科技大学计算机学院v
5、oidshow(unionchl*pu){printf("charformat:%c",(*pu).c);printf("intformat:%hx",pu->h);printf("longformat:%lx",(*pu).l);}voidshow_memoy(unionchl*pu){char*p=(char*)pu;inti=0;while(i<4){printf("addr%dthbyteofuis0x%pt",i,p+i);printf("theASCIIin%dthbyteofuis%c",i,*(p+i));i++;}}7/30/20218华中科技大学计算机学
6、院程序的运行结果如下:sizeofuis4charformat:4intformat:3334longformat:31323334addr0thbyteofuis0xFFD8theASCIIin0thbyteofuis4addr1thbyteofuis0xFFD9theASCIIin1thbyteofuis3addr2thbyteofuis0xFFDAtheASCIIin2thbyteofuis2addr3thbyteofuis0xFFDBtheASCIIin3thbyteofuis1charformat:8intformat:3638longformat:31323638addr0thb
7、yteofuis0xFFD8theASCIIin0thbyteofuis8addr1thbyteofuis0xFFD9theASCIIin1thbyteofuis6addr2thbyteofuis0xFFDAtheASCIIin2thbyteofuis2addr3thbyteofuis0xFFDBtheASCIIin3thbyteofuis17/30/20219华中科技大学计算机学院对程序和程序的运行结果可以
此文档下载收益归作者所有