本次课内容:共用体 其中:枚举和 typed类型自阅。 教学目的:掌握相关概念,共田〃的户 用方法 重点:共用体的定义和引F 难点:共用体的引用。 预习: 结构体的定y 体成 配名间的卡系。 结构体中,每 有有隆者空间
本次课内容:共用体 其中:枚举和typedef类型自阅。 教学目的:掌握相关概念,共用体的定义意义和引用方法。 重点:共用体的定义和引用。 难点:共用体的拆分引用。 预习: 结构体的定义,结构体成员和内存分配空间的关系。 结构体中,每个成员占有独立的存储空间
、共用体类型数据 1、共用体概念 共用体数据类型:指将不同的数据项存放于同一段内存单元的一种 构造数据类型。 定义形式: (1)unon共用体名 【成员列表} (2) 11u共用体名 1010 a 【成员列表}变量列表; (3 union 成员列表}变量列表 如: anti t int ay float by char ce
一、共用体类型数据 1、共用体概念 共用体数据类型:指将不同的数据项存放于同一段内存单元的一种 构造数据类型。 定义形式: (1) union 共用体名 { 成员列表 }; (2) union 共用体名 { 成员列表 } 变量列表; (3) union {成员列表 } 变量列表; 如:union exam { int a; float b; char c; }; b a 1010 c
2、共用体引用 与结构体变量成员引用相似 如:x ax b 习 Xac 注:共用体变量某一时刻只能存放其中一个成员值,即最后所赋的 值 例:p267714 maino 1010000000 0000000 a unnI b t int aj foat be char c; 1K,yH X.a3 print(%dn”ya)月
2、共用体引用 与结构体变量成员引用相似 如:x . a , x . b , x . c 注:共用体变量某一时刻只能存放其中一个成员值,即最后所赋的 值。 例:p267_7.14 main() { union exam { int a; float b; char c; }x,y; x.a=3; y=x; printf(“%d\n”,y.a); } b a 1010 00000011 c 00000000
3、应用 (1)一个数据域存放不同的对象P268 struct fong num num char name20; char sex, char job; name 20 unIon d int class seX char froup20l ob 3category class B person[10l; groupe?
3、应用 (1)一个数据域存放不同的对象P268 struct {long num; char name[20]; char sex; char job; union { int class; char froup[20] }category }person[10]; num name[20] sex job class group[20]
2)一段内存空间的内容拆分P268716 main (0 177736 01000001 union int char i int i; 177737 01100001 char ch 2; X x=24897 printf(“i=%0Ⅶn”,xi); printf("ch0=%0,chl=%0Ⅶn”,xch0,xch1); printf(ch0=( oc, chl=%cln", xch[ x.xh1D 结果: 高字节 低字节 i=60501 01100001 01000001 ch0=101,ch1=141 ch0=A.chI=a
(2)一段内存空间的内容拆分P268_7.16 main() { union int _char { int i; char ch[2]; }x; x.i=24897; printf(“i= %0\n”,x.i ); printf(“ch0=%o,ch1=%o\n”,x.ch[0],x.ch[1] ); printf(“ch0=%c,ch1=%c\ \n” ,x.ch[0],x.xh[1]); } 结果: i=60501 ch0=101,ch1=141 ch0=A,ch1=a 01000001 01100001 177736 177737 ch[0] ch[1] 高字节 低字节 01100001 01000001
(3)作为函数参数 union int char char ch 2; maino i union int char yi voie int to char (union int char x); yi=24897; int to char(y) void int to char(union int char x) { printf(“cho%o,ch1=%0n”,xch0],xch[1,); printf(ch0=%c, ch1=%ocIn",x xh[0x, xh 1 ); 结果: ch0=101,chl=141 ch0=A chI=a
(3)作为函数参数 union int_char { int i; char ch[2]; }; main() { union int_char y; voie int_to_char (union int_char x); y.i=24897; int_to_char(y); } void int_to_char(union int_char x) {printf(“ch0%o,ch1=%o\n”,x.ch[0],x.ch[1],); printf(“ch0=%c,ch1=%c\n ”, x.xh[0],x,xh[1] ); } 结果: ch0=101,ch1=141 ch0=A,ch1=a
(4)用指针变量传递共用体地址 union int char f int i; char ch2; }; main (0 i union int char y, p; void int to char(union int char*p); yi=24897; p=&y; int to char(p void int to char(union it char * pt) printf(ch0=%0, ch1=%on",pt->ch0lpt->chID printf(ch0=%c, ch1=%ocIn",pt->ch] pt->chID
(4)用指针变量传递共用体地址 union int_char { int i; char ch[2]; }; main() { union int_char y,*p; void int_to_char(union int_char *p); y.i=24897; p=&y; int_to_char(p); } void int_to_char(union it_char *pt) { printf(“ch0=%o,ch1=%o\n”,pt->ch[0],pt->ch[1]); printf(“ch0=%c,ch1=%c\n”,pt->ch[0],pt->ch[1]); }
小结: 1、共用体各成员共同使用所分配的存储空间,并且每 个成员都从第一个字节开始引用,每个成员的地址都相 2、共用体类型和结构体类型定义方法相同,成员引用 方法相同。 3、共用体中各成员数据不能同时保存,最后存储的数 据是最终结果。 4、共用体在指针和函数方面的应用与结构体类似。 实验内容: 2747-8 要求 1、独立完成,认真作好上机前准备; 2、及时完成实验报告
小结: 1、共用体各成员共同使用所分配的存储空间,并且每 个成员都从第一个字节开始引用,每个成员的地址都相 同。 2、共用体类型和结构体类型定义方法相同,成员引用 方法相同。 3、共用体中各成员数据不能同时保存,最后存储的数 据是最终结果。 4、共用体在指针和函数方面的应用与结构体类似。 实验内容: P274_7.8 要求: 1、独立完成,认真作好上机前准备; 2、及时完成实验报告