第7章 结构体、共同体和
C语言程序设计精品讲义第7章 结构体与共同体
{
struct student s1 ;
s1.num = 99010101 ;
= “wang hai” ; s1.score = 99 ;
结构变量。
mprintp ( &ss11 ) ;
指向结构的指针。
}
void mprintp (pv )
⒌结构数组
结构变量也可以构造成数组,称为结构数组。每个数组元素都 是一个结构变量,都含有结构成员项。它们在内存中的地址是连续 的。
数组的说明:
struct 结构名 结构数组名 [常量表达式] ;
struct student{
long num ; char name[20] ; float score ; } stud[3] ;
结构和联合的操作分为三个步骤:
⑴根据需要定义结构或联合类型; ⑵通过定义的类型说明变量、数组、指针; ⑶引用变量、数组元素和指针指向的对象。
7.1 结 构 体
⒈结构类型的定义
格式:
用标识符命名的结构类型名。
struct 结构名{ type 成员项1 ; type 成员项2 ;
结构标志。…
结构类型中所含的成员 项及其类型。
⑴传递一个结构指针(效率高)。 ⑵传递一个结构变量(效率低)。
#include<stdio.h>
void mprintp (struct student )* ;) ;
struct student { long num ;char *name ;float score;} ;
void main ( )
说明: ⑴注意类型和变量的区别。 ⑵成员项可单独使用。wang.age=20 ⑶结构的成员项也可以是结构变量。
第七章结构体共同体枚举类型
struct stu{ int id; char name[20]; float score; }st1, st2[10], st3[4][30]; 这里,分别定义了结构体变量st1、一维结构体数 组st2和二维结构体数组st3。其中数组st2中包含 10个stu类型的数据:st2[0]、st2[1]、……、 st2[9],而在数组st3中包含4行30列个sut类型的 数据。
void input(stu s[],int n) { cout<<“输入学生信息:\n”; cout<<“cpp English math\n”; for(int i=0;i<n;i++) //输入n个学生的信息 { cin>>s[i].name; cin>>s[i].id; cin>>s[i].cpp>>s[i].English>>s[i].math; s[i].ave=(s[i].cpp + s[i].English + s[i].math)/3; //计算每个学生的平均成绩 } }
C++ Programming
void output(stu s[],int n) { cout<<“name id cpp
English
mathBiblioteka ave\n”;for(int i=0;i<n;i++) //输出n个学生的信息 cout<<s[i].name<<„\t‟<<s[i].id<<„\t‟<<s[i].cpp<<„\t<< s[i].English<<„\t‟<<s[i].math<<„\t‟<<s[i].ave<<„\n‟; }
结构体共同体和枚举型
访问共同体的成员同样使用成员 访问运算符“.”,但是由于共同 体成员共享内存,因此同一时间 只能访问其中一个成员的值。例 如,`union_var.member`。
访问枚举类型的变量时,可以 直接使用枚举常量名来赋值或 比较。例如,`enum_var = ENUM_CONSTANT` 或 `if (enum_var == ENUM_CONSTANT)`。
结构体(struct)
结构体是一种复合数据类型,它可以包含多个不同类型的数据成员。在内存中,结构体通 常占用连续的内存空间,每个数据成员按照定义的顺序依次存储。
共同体(union)
共同体也是一种复合数据类型,它允许在相同的内存位置存储不同的数据类型。但是,共 同体的所有成员共享同一块内存空间,因此它们的存储是覆盖的,即同一时间只能存储其 中一个成员的值。
结构体共同体和枚举型
$number {01}
目 录
• 结构体概述 • 共同体概述 • 枚举型概述 • 结构体、共同体和枚举型的比较 • 结构体、共同体和枚举型的应用
案例 • 总结与展望
01
结构体概述
定义与特点
01
结构体是一种用户自定 义的数据类型,允许将 不同类型的数据组合成
一个有机的整体。
02
结构体可以作为函数参数和返回值,实现数据 的整体传递和处理。
结构体的声明与定义
结构体的声明使用关键字`struct`,后面跟结构体的名称和数据成员的列表。 结构体的定义需要在声明之后进行,定义时要指定每个数据成员的类型和名称。
可以使用结构体变量来存储和操作结构体类型的数据。
02
共同体概述
定义与特点
枚举型
适用于定义一组具有固定整数值的常量的情况,例如表示一周的几天、颜色名称等。枚举类型可以提高 代码的可读性和可维护性,同时减少因使用魔法数字(硬编码的常量)而导致的错误。
c程序设计第七章知识点
c程序设计第七章知识点C程序设计是计算机科学和技术领域中非常重要的一门课程,而第七章作为其中的一部分,涵盖了许多关键的知识点。
本文将对C程序设计第七章的知识点进行介绍和讨论。
一、结构体在C语言中,结构体是一种自定义的数据类型,它能够将不同类型的数据组合在一起,形成一个新的数据类型。
结构体由多个成员组成,每个成员可以是不同的数据类型,比如整型、字符型、浮点型等。
结构体的定义方式如下:```cstruct 结构体名{数据类型成员名1;数据类型成员名2;// ...};```结构体的成员可以通过`.`操作符来访问和修改,比如`结构体名.成员名`。
结构体的应用广泛,常用于创建复杂的数据结构,如链表、树等。
二、共用体共用体是一种特殊的数据类型,它允许不同的成员共享同一块内存空间。
共用体的定义方式与结构体类似,如下所示:```cunion 共用体名{数据类型成员名1;数据类型成员名2;// ...};```共用体的成员在内存中占用相同的空间,成员之间的修改会相互影响。
共用体可以用于节省内存空间,但需要注意成员的使用顺序和类型。
三、枚举枚举是一种特殊的数据类型,它可以定义一组具有名称的常量。
枚举常量可以在程序中代替数字,提高可读性和可维护性。
枚举的定义方式如下:```cenum 枚举名{枚举常量1,枚举常量2,// ...};```在程序中使用枚举常量时,可以直接使用其名称,无需使用具体的数值。
枚举常量默认从0开始递增,但也可以手动指定初始值。
四、指针与结构体指针是C语言的重要组成部分,结合结构体可以实现更灵活的数据操作。
通过指针,我们可以直接访问和修改结构体的成员,而无需复制整个结构体。
指针与结构体的使用方式如下:```cstruct 结构体名 *指针名;```通过将指针与结构体关联,可以使用指针来访问和修改结构体的成员,比如`指针名->成员名`。
指针与结构体的结合使用是C语言中常见的操作方式,可以提升程序的效率和灵活性。
C++学习课件PPT7 结构体、共用体和
if(i==col){ color t; t=cols[i]; cols[i]=cols[n]; cols[n]=t; }
print(col); if(n==0) print(col); else{ color colnext;
Input( ) 和Output( )函数的形参 x 称为对 student类型的引用型变量, 详述见下页。
7.1.7 关于引用——结合结构之例
引用是指为某变量提供了一个“别名”,在函数中 使用通过别名来使用这个变量。
– 函数Input和Output的形参x此时被定义为实参( sts[i] )的 “别名”,在发生函数调用时,两个函数不给x变量分配 存储空间,而x实际上与函数调用时的实参 sts[i] 共享存储 空间。
– 因此,两个函数对x的值进行修改,实际上对sts[i]的值进 行了修改。
函数引用调用是经常使用的,其格式为:
– void Input(student & x)
问题其:它比类较函型数形:v参oid也Inp可ut(引stud用en调t &x用)和:voi见d In例pult7(s-t4ud.cenptpx)的区别,
#include "iostream.h" union utype { int i; char ch;}; void main() {
问题:程序中每个输出各 是什么?请3号同学回答
0:data.i=33445566 0:data.ch=A
utype data;
0:data.i=33445541
data.i=0x33445566; cout.setf(ios::hex);
第7章结构体、联合体和枚举类型 1
第7章结构体、联合体和枚举类型第 7 章(42) 有以下程序#include "stdio.h"struct s{ int x,y;} data[2]={10,100,20,200};main (){ struct s *p=data;printf("%d\n",++(p->x));}程序运行后的输出结果是【B 】A) 10 B)11C) 20 D)21 (44) 以下程序的输出结果是#include "stdio.h"struct HAR{ int x, y; struct HAR *p;} h[2];main(){ h[0],x=1;h[0];y=2;h[1],x=3;h[1];y=4;h[0],p=&h[1],p=h;p rintf(“%d %d \n”,(h[0],p)->x,(h[1],p)->y);}A) 12 B) 23 C) 14 D) 32(43) 以下程序的输出结果是#include "stdio.h"amovep(int p, int (a)[3],int n){ int i, j;for( i=0;i<;i++)for(j=0;j<n;j++){ *p=a[i][j];p++; }}main(){ int *p,a[3][3]={{1,3,5},{2,4,6}};p=(int *)malloc(100);amovep(p,a,3);printf(“%d %d \n”,p[2],p[5]);free(p);}A) 56B) 25 C) 34 D) 程序错误(36) 设有以下说明语句struct ex{ int x ; float y; char z ;} example;则下面的叙述中不正确的是A) struct结构体类型的关键字B) example是结构体类型名C) x,y,z都是结构体成员名D) struct ex是结构体类型(37) 以下只有在使用时才为该类型变量分配内存的存储类说明是A) auto和 static B) auto和 registerC) register和 static D) extern和 register(30) 有以下程序#inc1ude <stdio.h>main(){ printf("%d\n", NULL); }程序运行后的输出结果是A) 0B) 1 C) -1 D) NULL没定义,出错(33) 以下选项中不能正确把c1定义成结构体变量的是A) typedef struct B) struct color cl{ int red; { int red;int green; int gree n;int blue; int blue;} COLOR; };COLOR cl;C) struct color D) struct{ int red; { int red;int green; int green;int blue; int blue;} c l; } c l ;(44) 有以下程序struct STU{ char num[10]; float score[3]; };main(){ struct stu s[3]={{“20021”,90,95,85},{“20022”,95,80,75},{“20023”,100,95,90}},*p=s;int i; float sum=0;for(i=0;i<3,i++)sum=sum+p->score[i];printf(“%6.2f\n”,sum);}程序运行后的输出结果是A) 260.00 B) 270.00C) 280.00 D) 285.00(45) 设有如下定义:struck sk{ int a;float b;}data;int *p;若要使P指向data中的a域,正确的赋值语句是A) p=&a; B) p=data.a; C) p=&data.a;D) *p=data.a;(46) 有以下程序#include <stdlib.h>struct NODE{ int num; struct NODE *next; };main(){ struct NODE *p,*Q,*R;p=(struct NODE*)malloc(sizeof(struct NODE));q=(struct NODE*)malloc(sizeof(struct NODE));r=(struct NODE*)malloc(sizeof(struct NODE));p->num=10; q->num=20; r->num=30;p->next=q;q->next=r;printf(“%d\n”,p->num+q->next->num);}程序运行后的输出结果是A) 10 B) 20 C) 30 D) 40(47) 若有以下说明和定义typedef int *INTEGER;INTEGER p,*q;以下叙述正确的是A) P是int型变量B) p是基类型为int的指针变量C) q是基类型为int的指针变量D) 程序中可用INTEGER代替int类型名(49) 有以下程序#include <stdlib.h>main(){ char *p,*q;p=(char*)malloc(sizeof(char)*20); q=p;scanf(“%s%s”,p,q); printf(“%s%s\n”,p,q);}若从键盘输入:abc def<回车>,则输出结果是:A) def def B) abc def C) abc d D) d d(49) 若以下定义:struct link{ int data;struck link *next;}a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构:a bdata next data next┌──┬──┐┌──┬──┐│ 5 │┼──→│ 9 │ \0 │└──┴──┘└──┴──┘↑pcdata next┌──┬──┐│ 7 ││└──┴──┘↑q指针p指向变量a,q指向变量c。
C++课件 第七章 结构体、共同体和枚举
总结
我们深入学习了C++中的结构体、共同体和枚举,并了解了它们的定义、使用和区别。通过此章的学习,我们 掌握了更多编程的技巧和灵活性。
练习题
Question 1
如何定义一个包含姓名、年龄和分数的结构体?
Question 2
请解释什么是枚举类型,它与结构体的区别是什么?
成员的访问和赋值
学习如何通过结构体变量访问和赋值结构体的成员。
结构体数组与共同体
结构体数组
掌握如何定义和使用结构体数组,处理多个结构体 对象的同时。
共ห้องสมุดไป่ตู้体
学习共通体的定义和使用,可以在同一内存地址存 储不同类型的数据。
枚举类型
1
定义和使用
了解如何定义和使用枚举类型,使用符
枚举成员
2
号常量表示一组相关的常量值。
学习如何使用枚举成员,为常量赋予更
加直观的语义。
3
枚举的好处
了解枚举类型在代码编写和代码可读性 方面的优势。
结构体、共同体和枚举的区别和联系
1 区别
详细探讨结构体、共同体 和枚举之间的差异,如内 存分配方式和使用场景。
2 联系
强调结构体、共同体和枚 举的共同点,如都是用于 数据类型的封装和组织。
3 灵活性和应用
参考资料
C++结构体和共同体
此篇文章说明了C++中如何定义和使用结构体和 共同体。
C++枚举类型
了解C++中枚举类型的定义和学习,学习枚举的 使用场景。
C++课件 第七章 结构体、 共同体和枚举
第7章 (PLASMA)
7.2.1 结构体变量的定义
struct grade { int math; int C_language; int english; float average; }; struct student { long number;
7.2.1 结构体变量的定义
7.3 结构体变量的引用
7.3.1 引用结构体变量的成员 7.3.2 两个相同类型的结构体变量之间相互赋值 7.3.3 结构体变量在函数间的传递
7.3.1 引用结构体变量的成员
任何一个结构体变量不能作为整体输入或输出,为了 实现变量的输入、输出操作,需要对变量中的每一个 成员进行引用。引用结构体变量中成员的方式为: 结构体变量名.成员名 其中,“.”称为成员运算符,具有极高的运算优先 级。若结构体多层嵌套,则需要用若干个成员运算符, 一级一级找到最低一级的成员,只能对最低级的成员 进行赋值、存取或运算。引用内层成员的一般形式是: 结构体变量名.成员名1.成员名2.„.成员名n
7.1 结构体类型的定义
在前几章中,我们已经学习了C语言所提供的一些基本 数据类型,如char、int、float、double等,也学习 了由相同数据类型所组成的数据的集合——数组。但 是在现实生活的很多领域中,经常需要处理一些具有 不同数据类型的数据。例如,处理一个学生的信息时, 学生的学号、姓名、性别、年龄等信息作为学生的属 性,需要作为一个整体来处理。如果采用简单的基本 数据类型来操作,则难以反映出它们之间的内在联系, 并且使程序冗长,降低数据处理的效率,且易出错误。 因此,在C语言中引入了一种能够处理复杂数据的数据 类型——结构体类型。
7.2.2 结构体变量的初始化
或者 struct student wang_lin={0601005,“wang lin”,“M”,19,“Shenyang University of Technology”}; 也可以像数组一样进行不完全的初始化,例如: struct student wang_lin={0601005,“wang lin”,“M ”};
VC++程序设计 -第七章结构体、共同体和枚举类型
int id_no; int eng, phy, math; float ave; } stu1, stu2;
C++程序设计教程-第7章结构体与共用体
C++程序设计
湖南大学
杜四春、银红霞
在定义了结构体变量后,就可以用不同的赋值方 法对结构体变量的每个成员赋值。例如:
strcpy(,”Zhang San”);
worker1.age=26;
strcpy(worker1.phone,”1234567”);
worker1.sex=’m’;
char addr[20];
}stu[3];
C++程序设计
湖南大学
杜四春、银红霞
3. 直接定义结构体数组
结构体数组的定义形式如下:
struct
//没有结构体名
{ 成员表列; }数组名[元素个数];
例如: struct {
char name[20];
char sex;
int age;
char addr[20];
C++程序设计
湖南大学
杜四春、银红霞
1. 先定义结构体类型,再用它定义结构体数组。
结构体数组的定义形式如下:
struct 结构体名 {
例如: struct student
成员表列;
{
}; struct 结构体名
char name[20]; char sex; int age;
char addr[20];
结构体数组初始化的一般形式是:
struct 结构体名
{ 成员表列;
}; struct 结构体名 数组名[元素个数]={初始数据表};
C++程序设计
湖南大学
杜四春、银红霞
或者:
struct 结构体名
{
成员表列;
}数组名[元素个数]={初始数据表}; 在对结构体数组进行初始化时,方括号[ ]中元素
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
14
7.2.1 共同体的定义 定义共同体的格式: union 共同体名 { 类型标识符 成员名1; 1 类型标识符 成员名2; …… };
15
例如: (1)union unioncif //定义了一个包括3个成员的共同体 { char ch; int i; float f; }; (2)union //定义了一个包括3个成员的匿名共同体类 型 { char ch; int i; float f; };
13
7.2 共同体
共同体(也叫联合体)是C++的一种构造数据类型, 也是一种由用户自己定义的数据类型,共同体和结构体 有许多相似之处:由若干种数据类型组合而成,组成共 用体数据的若干个数据也称为成员。但与结构体不同的 是,共同体数据中所有成员占用相同的内存单元,因此 变量中的所有成员的首地址相同,变量的地址就是该变 量成员的地址。
3
7.1.2 结构体变量的定义 结构体变量的定义形式有3种: ⑴ 不指定结构体类型名,直接在定义结构体类型时说明 变量,这种结构体类型只能使用一次。使用这种形式说 明的变量,不管其成员数据是否相同,不是同一语句说 明的变量不能看成相同类型的变量。 例:struct { int a, b ; } st1,st2 ; struct { int a, b ; } st3 ;
23
20
7.3 枚举类型
枚举类型是一种用户定义的新的数据类型,在该类 型 中,有序地列举了该类型的变量的所有可能的取值。 7.3.1 枚举类型的定义 定义方法:
enum 枚举类型名 { 枚举常量1,枚举常量2,… ,枚举常量n}; 例如: enum week {sum,mon,tue,wed,thu,fri,sat}; 其中,每个枚举常量对应一个整数值作为序号,他们依次是0, 1,…,n-1。用户也可以自己为枚举常量确定对应的序号。 enum week{sun=7,mon=1,tue,wed,thu,fri,sat};
10
7.1.5 结构体数组 (1)结构体数组的定义 元素类型为结构体的数组称为结构数组。定义结构 数组的方法与定义结构体变量的方法类似。 例如: struct student { int num; char name[20]; }stud4[10]; student stud5[10]; 定义了两个包含有10个元素的结构体数组stud4、 stud5。
21
7.3.2 枚举类型变量的定义
定义了枚举类型后,我们就可以通过定义的枚举类型来说明 此类型的变量,其说明形式类同于结构体类型,也有如下几种形式: 1、不指定枚举类型类型名,直接在定义枚举类型时说明变量,这种 、 枚举类型类型只能使用一次。 enum { red , yellow , blue , green } a, b ; 2、先定义枚举类型,然后再定义此类型的变量。这种形式的枚举类 、 型可以重复用来定义同类型的变量。 enum COLOR { red , yellow , blue , green }; COLOR a, b; COLOR c, d; 3、定义枚举类型的同时也可以说明变量,并且在其它语句中还可以 、 说明同类型的变量。 enum COLOR { red , yellow , blue , green }a, b; COLOR c , d ; 22
17
(2)union { int i; char ch[10]; }y={12}; //用匿名共同体类型声明1个共同体变量y (3)union work { char ch[10]; int i; }; work z={“worker”}; //用共同体类型work声明1个共 同体变量z
18
共同体变量和结构体变量的重要区别是: 共同体变量内的所有成员共用同一个存储 区 域,其存储区域的大小由占用最大存储区的成 员所决定。结构体变量内的成员占用不同的存储 区域,其存储区域的大小是所有成员所占存储区 域之和。
5
• 注意: 注意: (1)结构体类型与结构体变量概念不同。系统 并不为结构体类型分配内存,因此,不能对结 构体类型进行赋值等运算;结构体变量是占用 系统内存的,也可对结构体变量进行赋值等运 算。 (2)结构体类型变量的作用域与一般变量的作 用域相同。
6
7.1.3 结构体变量的初始化 对结构体变量初始化的方法是使用花括号将每个成员的 值括起来进行赋值。 例如:struct student { char num[10]; char name[20]; char sex; int age; float score[5]; }; 下面对结构体变量的初始化语句都是正确的: (1)struct student st1={“001”,”wang”,’f’,18,{96,86,88,62,53}}; (2)struct student st2=st1;
2
• 注意: 注意: (1)结构体是一种数据类型,定义结构体时系 统并不会给成员分配内存。只有定义这个结构体 类型的变量时,才分配内存。 (2)已经定义的结构体类型为用户自定义的数 据类型,可用来说明变量、数组等。 (3)结构体类型的定义是可以嵌套的,即某个 结构体成员的类型可以是另一个已定义的结构体 类型。
7.3.3 枚举类型变量的运算和使用
(1)赋值运算 ①同类型变量间的赋值。 ②也可将枚举常量表中的某一枚举常量赋给枚举变量。 例如: enum COLOR { red , yellow , blue , green } a ; COLOR b; b = a; a = red; a = COLOR (3) ; // 不可以a = 3 (2)关系运算 关系运算是在同类型变量间进行的,比较的是变量所取的枚举 常量的序号。 (3)输入和输出 枚举类型变量是不能直接从键盘输入的,但可以直接输出,输 出值为变量所取的枚举常量的序号。
第7章 结构体、共同体和枚举类型 章 结构体、 7.1 结构体
结构体是一种构造数据类型,它能使一定数 量的不同类型的数据组合在一起,作为一个整体 来使用同一内存块。 例如:描述一个学生的基本信息,学号、姓 名、性别、年龄、成绩等。
1
7.1.1 结构体类型的定义 要定义结构体变量,必须先定义结构体类型。 定义结构体了类型的一般格式为: struct 结构体类型名 { 类型名 成员1; 类型名 成员2; …… };
16
7.2.2 共同体变量的定义和初始化 共同体变量的定义和结构体变量的定义相似。 常用的形式: union 共同体名 共同体变量表; 可细化成3种:一是在定义共同体类型的同时声明 共同体变量;二是使用无名共同体类型声明共同体变 量;三是用共同体类型声明共同体变量。 例如: (1) union work { char ch[10]; int i; }x={“teacher”}; //声结构体数组初始化的方法与一般数组初始化方式 类同,只是由于结构体数组的每个元素都是结构体, 因此要将一个元素的所有成员值放在一个花括号中, 以便区分每个元素。 例如: struct student { int num; char name[20]; }stud6[10]={{123,”zhang”},{456,”lee”}};
8
假设有下列结构体类型定义: Struct st { char ch; int i; float f; }; 对于结构体类型struct st在内存中占有多少字节呢?
9
7.1.4 结构体变量的引用 结构体变量不能整体引用,只能引用变量成员。 引用方式: 结构体变量名.成员名 其中,“.”为成员运算符,它的结合性是从左向右。 例如:st1.num 表示引用了结构体变量st1的num成 员 注意: (1)同类型的结构体变量可以相互赋值。 (2)若结构体类型存在嵌套时,对变量的成员需逐级引 用。 例:st1.point.english
12
(3) 结构体数组元素的引用 由于结构体数组元素相当于一个结构体变量,因 此前面讨论的关于引用结构体变量的方法也适用于结 构体数组元素。 引用方式: 结构体数组名[下标].成员名 例如:stud5[0].num引用了stud5的第1个元素的成员 num。 注意:结构体类型的变量作函数的参数时,可以将结构 体变量整体用作函数的参数,但其实参的调用不 同于数组,它属于值调用,并且实参与相应的形 参必须是同一类型的结构体变量。
4
⑵ 先定义结构体类型,然后再定义此类型的变量。这
种形式的结构体类型可以重复用来定义同类型的变量。 例:struct STU{ int a, b ; }; STU st1,st2 ; STU st3 ; st1,st2,st3属于同类型的变量。 ⑶ 定义结构体类型的同时也可以说明变量,并且在其它 语句中还可以说明同类型的变量。 例:struct STU{ int a, b ; } st1,st2 ; STU st3 ; st1,st2,st3属于同类型的变量。
7
如果结构体类型的成员又是一个结构体,其变量的初 始化形式同样是在说明变量时给出成员列表或通过同类 型的变量整体赋值。 例:struct SCORE { float english, maths ; }; struct STUDENT { int num ; char name[10] ; SCORE point ; } st1 = { 10, “WangFang”, 90, 95 } ; STUDENT st2 = st1, st3={ 20, “ChangHua”, { 89, 92 } } ;
19
7.2.3 共同体变量的使用 共同体变量的引用方式: 共同体变量名.成员名 由于任一时刻共同体变量只有一个成员存在,所以引 用时应特别注意。 7.2.4 共用体类型数据的特点 1. 在每一瞬时内存段只能存放其中一种,而不是同时存放 几种。 2. 共用体变量中起作用的成员是最后一次存放的成员 3. 共用体变量的地址和它的各成员的地址都是同一地址 4. 共用体类型可以出现在结构体类型定义中,也可定义共 用体数组,反之也成立