第十二章 结构体与共用体
第12章结构体和共用体

【例】
有3个学生的信息,放在结构体数组中,要求用指针变量输出 全部学生的信息。
#include <stdio.h> struct student {int num;
char name[20]; char sex; int age; •图}9;-8
struct student stu[3]={{10101,"Li Lin",'M', 18}, {10102,"Zhang Fun",'M', 19}, {10104,"Wang Min",'F',20}};
12.2.7结构体所占内存的字节数
• struct 类型用内存字节数 = ? 【例12.2】 • 是所有成员变量的内存总和吗?
用运算符sizeof获得结构体大小 sizeof(变量或表达式) sizeof(类型)
printf("%d\n", sizeof(struct sample)); printf("%d\n", sizeof(SAMPLE));
p.year = 2000; p.month = 5; p.day = 22; }
结构体变量 作函数参数
【例12.4】
Before function call:1999/04/23 After function call:1999/04/23
struct date {
int year; int month; int day; }; void func(struct date *p) {
【例12.1】 若要从键 盘输入结 构体变量 stu1的内 容,那么 程序如何 修改?
两个地址有何不同?
第十二章 结构体与共用体

12层 占ilse.Prom 块 的 西 涌 楼 石 以 二 道 干 主 东 城 运 亚 于 位 村 员 官 术 技 总 分 上 北 区 南 下 地 括 包 积 面 宅 住 其 体 单 个 多 等 程 工 外 室 心 中 务 服 、 共 为 数 筑 ~ A栋 lsxYbopfu.I04wv7358'qP-GDSNELV"6%zkFBCM integrady,chm 。 施 设 套 配 建 公 置 布 空 架 首 , ) 顶 式 复 部 局 ( Asport,wiheuadxnfcvbglyz tngdpvfay,cquh27b'-w13GD4YSNELV"60%58zkFBCM
结构体与共用体
内容 主要 内容 重点 难点 问题 提出 1.结构体的概念及其基本操作 2.结构体的引用方法 3.结构体数组的使用 1.结构体的概念及基本操作 2.结构体的引用方法 结构体的概念及基本操作
第一讲 说明
前面已经介绍了基本数据类型──整型、浮点型、字符型,也介绍了 一种构造类型──数组,数组中各元素是属于同一种类型的。 例如:一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项, 各项的数据类型并不相同(如下图) num name sex age score addr 10010 Li Fan m 18 88 chengde 如果将 num、name、sex、age、score、addr 分别定义为互相独立 的简单变量,难以反映它们之间的内在联系,如何解决此类问题呢? 一、结构体类型引入 上例应该合数据组织成一个组合项, 在一个组合项中包含若干个不 同类型数据项,C 语言没有提供这样的数据结构,因此用户必须在程序 中建立所需结构体类型。 Struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }; Struct student 是一个类型名, Struct 是一个关键字,标志着这 是一个结构体类型。 二、声明一个结构体的形式 Struct 结构体名 {成员表列}; 其中,成员表列的格式为: 类型名 成员名; 三、定义结构体类型变量的方法 1.先声明结构体类型在定义变量名 已定义了一个结构体类型 Struct student,可以用它定义变量。
C语言程序设计 - 结构体和共用体-样本教案

用以下实例来分析:
struct
{int a;
int *s;
}*p;
第一组引用:对成员变量a的引用
++p->a++(p->a)
说明:成员变量a自增加1.
(++p)->a
说明:指针p先移动一个单位,然后引用对应的成员变量a.
注意: p每移动一个单位要移动多少字节?
格式一:先说明结构类型,再单独进行结构变量定义.
例:
struct student
{ char name[12];
char sex;
sturct date birthday;
float sc[4];
};
struct student std,pers[3],*pstd;
说明:这个例子定义了三个结构类型名为student的结构变量:
这种结构类型变量定义的方式与不省略"结构名"的方式相比,不同之处在于:这种格式定义结构变量以后无法再定义此结构类型的其它结构变量,而带有"结构名"的格式则可以.
格式三:使用typedef说明一个结构类型名,再用新类型名定义结构变量.
例:
typedefstruct
{ char name[12];
char sex;
{"Wang wu" , "F",1983, 3, 3,93,83,73,63}
};
有时结构数组长度可以省略,而由初值个数来暗示.
(4)结构变量成员的引用和操作:
1)对结构变量成员的引用和操作:
第十二讲结构体、共用体和枚举类型(C语言)

第十二讲结构体、共用体和枚举类型(C语言)第十二讲结构体、共用体和枚举类型本讲主要介绍C语言中的三种类型的定义和使用,其中两种是构造类型:结构体类型和共用体类型,一种是C语言的基本类型:枚举类型。
要求大家掌握结构体类型、共用体类型和枚举类型的变量的定义,掌握结构体类型和共用体类型变量及其成员的引用等基本操作,理解结构体数组的应用,理解结构体和共用体变量存储形式的不同,了解枚举类型变量的处理方式。
知识要点结构体类型的定义1. 结构体类型定义的一般形式2. 结构体类型定义中的注意事项结构体类型变量1. 结构体类型变量定义的三种方法2. 结构体类型变量的初始化3. 对结构体变量中成员的引用4. 对整个结构体变量的引用结构体数组1. 结构体数组定义的三种方法2. 结构体数组的初始化3. 对结构体数组元素的成员进行引用共用体1. 共用体类型和共用体变量定义的方式2. 共用体变量与结构体变量的区别3. 共用体变量成员的引用4. 共用体变量作为结构体变量的成员枚举类型1. 枚举类型和枚举变量定义的一般形式2. 枚举元素的处理§12.1 结构体类型的定义结构体类型定义的一般形式为:struct 结构体名{类型名1 成员名1;类型名2 成员名2;……类型名n 成员名n;};其中,struct是关键字,是结构体类型的标志。
结构体名是由用户定义的标识符,它规定了所定义的结构体类型的名称。
结构体类型的组成成分称为成员,成员名的命名规则与变量名相同。
§12.2 结构体类型变量一、结构体变量的定义定义结构体类型的变量有三种方法:1.先定义结构体类型,再定义变量。
注意:定义变量时,struct person必须在一起使用,它的用法与int、char等类型名的用法相同。
2.定义类型的同时定义变量。
3.直接定义结构体类型变量,省略类型名。
二、结构体变量的初始化将结构体变量各成员的初值顺序地放在一对大括号中,并用逗号分隔。
c语言结构体与共用体

•{ • 成员表列 • }变量名表列; • 三、直接定义结构类型变量 • 其一般形式为: • struct • { • 成员表列 • }变量名表列; • 即不出现结构体名。
• 关于结构体类型,有几点要说明: • 1.类型与变量是不同的概念,不 要混同。对结构体变量来说,在定义时 一般先定义一个结构体类型,然后定义 变量为该类型。只能对变量赋值、存取 或运算,而不能对一个类型赋值、存取 或运算。在编译时,对类型是不分配空 间的,只对变量分配空间。 • 2.对结构体中的成员(即"域"), 可以单独使用,它的作用与地位相当于 普通变量。关于对成员的引用方法见$ 10.3。
• 花括弧内是该结构体中的各个成员(或 称分量),由它们组成一个结构体。例 如,上例中的n.sex等都是成 员。对各成员都应进行类型说明,即 • 类型标识符 成员名 • 也可以把“成员表列”称为“域表”。 每一个成员称为结构体中的一个域。成 员名定名规则与变量名同."结构体”这 个词是根据英文单词structure译出的。 许多C语言书把structure直译为“结 构”。作者认为译作“结构”会与一般 含义上的“结构”混淆(例如,数据结 构、程序结构)。
• 结构体变量的地址主要用于作函数参数, 传递结构体的地址。 • $10.4 结构体变量的初始化 • 过去许多C版本规定,只有当结构 体变量为全局变量或静态变量时,才能 进行初始化。不能对动态局部变量进行 初始化。新版本无此限制。 • 一、对外部存储类型的结构体变 量进行初始化。 • [例10.1] •
• struct student • {1ong int num; • char name[20」; • char sex; • char addr[20」; • }a={89031,li Lin, 'M’,"123beijing Road”};
结构体与共用体zlh

结构体中每个成员可以是不同的 数据类型,而共用体中所有成员 必须是相同的数据类型。
结构体与共用体的区别与联系
• 使用方式:结构体中每个成员都可以单独访问和操作,而 共用体中一次只能使用其中一个成员。
结构体与共用体的区别与联系
自定义类型
结构体和共用体都是用户自定义的数据类型 ,可以根据需要组合不同的数据类型。
对于大型结构体和共用体,可以使用指针成 员来减少直接内存占用。
在跨平台编程时,要注意不同平台下的内存 对齐规则可能不同,需要进行相应的调整。
05
结构体与共用体的应用案例
案例一:使用结构体实现学生信息管理
定义学生结构体
包含学生姓名、学号、性别、年龄等字段。
创建学生信息数组
根据学生数量,创建相应大小的学生信息数组。
访问速度较慢
访问结构体的成员变量时,需要通过 指针或引用等方式进行间接访问,相 对于直接访问基本数据类型,速度较 慢。
结构体与共用体的优缺点分析
内存占用小
共用体中的所有成员变量共享同一块内存空间,因此相对于 结构体,共用体的内存占用较小。
访问速度快
访问共用体的成员变量时,可以直接通过内存地址进行访问 ,速度较快。
封装性好
结构体可以将多个变量封装在一起,形成一个自定义的数据类型,方便数据的 处理和管理。
结构体与共用体的优缺点分析
• 可扩展性强:结构体可以方便地添加或删除成员 变量,以适应不同的应用场景和需求。
结构体与共用体的优缺点分析
内存占用较大
由于结构体中每个成员变量都占用独 立的内存空间,因此相对于基本数据 类型,结构体的内存占用较大。
赋值给共用体变量
可以给共用体的任何一个成员赋值,如`data.f = 3.14;`,表示将 `data`的`f`成员赋值为3.14。
C语言第12讲 结构体共用体

§6.3 结构体变量的引用
引用规则
结构体变量不能整体引用,只能引用变量成员
引用方式: 结构体变量名.成员名
例 struct 成员(分量)运算符 student 可以将一个结构体变量赋值给另一个结构体变量 例 struct student { stu1.num=10; int num; 优先级: 结构体嵌套时逐级引用 1 { int num; 例 struct student 结合性:从左向右 { char name[20]; int num; 例 struct name[20]; char sex; char student char name[20]; stu1.score=85.5; 例 structchar num; student { int sex; int char sex; age; printf(“%d,%s,%c,%d,%f,%s\n”,stu1); () if(stu1==stu2) { int age; num; stu1.birthday.month=12; char name[20]; float score; int …….. () stu1.score+=stu2.score; char score; name[20]; int age; struct float date char addr[30]; stu1.age++; float score; char addr[30]; stu1={101,“Wan Lin”,„M‟,19,87.5,“DaLian”}; () sex; { int char month; }stu1,stu2; addr[30]; char birthday int age; int }stu1,stu2; day; num name float score; }stu1,stu2; month day year int year; stu2=stu1; ( ) char addr[30]; }birthday; }stu1,stu2; }stu1,stu2;
C语言学习入门笔记之结构体与共用体

结构体与共用体笔记定义结构体C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体(structre)。
在其他一些高级语言中称为“记录”.定义后的结构体类型和系统提供的标准类型(如int, char, float, double 等)具有相似的作用,都可以用来定义变量,只不过int等类型是系统已声明的,而结构体类型是由用户根据需要在程序中指定的。
定义一个结构体类型的一般形式为:struct 结构体名{ 成员表列};注意:1.结构体类型的名字是由一个关键字struct和结构体名组合而成的(例如struct Student) ,结构体名是由用户指定的,又称“结构体标记”,以区别于其他结构体类型。
上面的结构体声明中Student就是结构体名(结构体标记)。
2.花括号内是该结构体所包括的子项,称为结构体的成员。
“成员表列"(member list)也称为“域表”(field list),成员表列由若干个成员组成,每一个成员是结构体中的一个域。
对每个成员也必须作类型说明,其形式为:类型说明符成员名;成员名的命名应符合标识符的书写规定。
例如:struct stu{int num;char name[20];char sex;float score;};3.一个结构体的成员可以属于另一个结构体类型(嵌套)。
例如:struct Date //声明一个结构体类型struct Date{ int month;//月int day;//日int year;//年}struct Student//声明一个结构体类型struct Student{ int num;char name[20];char sex;int age;struct Date birthday;//成员birthday属于struct Date 类型char addr[30];};结构体类型变量1.定义结构体类型变量说明结构变量有以下三种方法。
C语言程序设计——结构体和共用体(完整版)

printf(“name\tage\tjob\tclass/office\n”); for(i=0;i<PN;i++) {if(body[i].job==„s‟) printf(“%s\t%d\t%3c\t%d\n”,body[i].name, body[i].age,body[i].job,body[i].units.class); else printf(“%s\t%d\t%3c\t%s\n”,body[i].name, body[i].age,body[i].job,body[i].units.office); } }
birthday num name sex age month day year addr
§12.3结构体数组
结构体数组的每一个元素都是具有相同结构类型 的结构体变量。 例:struct student {int num; char name[20]; float score; }stu[3]; 其中,定义了一个结构体数组stu,共有3个元素, 每个元素都具有struct student的结构形式。
§12.6共用体
共用体(也称为联合)也是一种构造的数据类型。 共用体是将不同类型的数据组织在一起共同占用 同一段内存的一种构造数据类型。 例如,在校学生和教师都填写以下表格: 姓名 年龄 职业 单位 其中,职业分两类:教师和学生; 而单位一栏里,学生填写班级编号(整型类型), 教师填写某系某教研室(整型类型) 。
§12.7枚举数据类型
当某些变量仅由有限个数据值组成时,通常用枚 举类型来表示。 所谓枚举是指将变量的值一一列举出来,变量的 值只限于列举出来的值的范围内。如一周只有7天, 一年只有12个月等等。
注意:枚举类型是一种基本数据类型,而不是一 种构造类型。关键字为enum。
C语言程序设计 - 结构体和共用体-样本教案

1.用指针处理链表
指向结构体类型数据的指针;用指针处理链表
3.结构变量在函数中的应用
在C语言中,允许结构变量的成员,结构变量的整体和结构变量的地址做为实参传递给相应的形参。
(1)向函数传递结构变量的成员
结构变量的成员作实参
结构变量的成员可以是普通变量,数组或指针变量,它们做实参时的情况同以前七,八,九章所讲。
格式一:先说明结构类型,再单独进行结构变量定义.
例:
struct student
{ char name[12];
char sex;
sturct date birthday;
float sc[4];
};
struct student std,pers[3],*pstd;
说明:这个例子定义了三个结构类型名为student的结构变量:
35个字节
35个字节
35个字节
指向结构类型的指针变量:
如:struct student *pstd;
系统为该指针变量分配一个存放"地址"的4个字节的内存空间,具体该指针变量指向哪个结构类型变量,通过为该指针变量赋予某结构变量地址值来确定.
如下例:
struct student *pstd1,*pstd2,*pstd3;
pstd1=&std;/*pstd1指向结构变量std的首地址*/
pstd2=pers;/*pstd2指向结构数组pers的首地址*/
pstd3=(struct student*)malloc(size of (struct student));
说明:结构变量名不是指向该结构的地址, 这与数组名的含义不同,
结构体与共用体小结

结构体与共用体小结结构体与共用体小结一,结构体得概念与定义1,结构体得定义struct结构体名{数据类型成员名1;数据类型成员名1;、。
};这里数据类型可以就是复合类型,例如又就是一个结构体类型,即嵌套;2,结构体变量得定义struct 结构体名变量名1,变量名2,,,变量名n;或:struct结构体名{数据类型成员名1;数据类型成员名1;。
、}结构体变量1,结构体变量2;或:struct{数据类型成员名1;数据类型成员名1;。
、}结构体变量1,结构体变量2;三种方式,第三种方式得话,每次要定义这个类型得结构体变量都要重复得写这一段代码;其实定义了结构体后,struct 结构体名就就是一种新得类型,上述语句就像声明变量一样;3,结构体变量得引用只能对结构体变量中得各个成员分别输出,不能对一个结构体变量作为一个整体输出;嵌套得结构体类型得引用:结构体变量名。
结构体类型成员名、内嵌结构体得成员名;4,结构体变量得初始化struct 结构体名变量名= {初始化数据};或者在定义得时候就初始化: struct结构体名{数据类型成员名1;数据类型成员名1;。
、、}变量名= {初始化数据};二,结构体数组1,结构体数组得定义举例struct stu{int stu_nu;char name[20];floatscore;};struct stu student[5];或者:struct stu{int stu_nu;char name[20];float score;}student[5];或者:struct{int stu_nu;char name[20];float score;}student[5];跟定义结构体变量得三种形式就是一样得,只不过这里每次定义得结构体变量就是一个数组;每一个student[i]都就是struct stu类型得;2,结构体数组得初始化与引用略;三,结构体与指针1,指向结构体得指针得定义,同上,也就是三种形式;struct employeesemployee1,*p1;或者:struct employees、。
结构体与共用体

2020/12/16
15
8.1 结构体
8.1.2 结构体数组
定义结构体数组的方法和结构体变量相似:
(1) struct 结构体名 {成员表列} 数组名[数组长度];
(2) 先声明一个结构体类型,然后再用此类型定义结构体数组: 结构体类型 数组名[数组长度];
例8.3 编写程序,利用结构体数组存储和显示三个学生的信息。 算法描述:首先定义并初始化一个结构体数组,然后通过printf 函数输出到屏幕上即可。
return 0;
}
2020/12/16
17
8.1 结构体
程序分析: 程序中定义了一个外部结构体数组stu,共3个元 素,并作了初始化赋值。在main函数中用for语句 逐个输出各元素的各个成员值。
2020/12/16
18
8.1 结构体
8.1.3 结构体指针
指向结构体变量的指针
例8.4 使用指向结构体变量的指针来访问结构体变量的 各个成员。
struct student
{ int num;
char name[10];
float score; };
int main ()
{struct student stu[3]={{1, "Wang", 90.0}, {2, "Qian", 89.5}, {3, "Sun", 85.0}};
struct student *p; int i;
注意 : (1)在定义结构体变量时可以对它的成员初始化。初始化列表是用花括号 括起来的一些常量。如:
struct Student a={10001,"Li Ming",'M',"Bei Jing"};
结构体~共用体

第十一章结构体与共用体§11.1 结构体类型的定义11.1.1 概述在此之前,除数组外的基本变量都是属于非构造类型的数据。
数组是一种构造类型数据。
本章介绍另两种构造类型的数据——结构体和共用体。
C语言中的结构体相当于其他高级语言中的“记录”,它可以把多种类型的数据组合在一起,构成一个整体,一种新类型的数据,从而适应复杂类型数据的要求。
11.1.2 结构体类型的定义1、定义struct 结构体名{成员1;成员2;......成员n;}; /*只定义类型时,最后一行上的“;”不可缺少*/ 其中:结构体名称为该结构体标记。
成员称为结构体域(集合称为域表),其构成为“类型名成员名”,成员名构成规则与变量名相同。
2、结构体变量的存储空间分配各个成员所占字节数之和,即是该变量所需字节数。
3、结构体类型的定义示例见教材P260。
§11.2结构体类型变量的定义可以用三种方法定义结构体类型变量。
11.2.1 先声明结构体类型,再定义变量1、先定义一个结构体类型,其中student为结构体名,如:struct student /*该类型共包含4个成员,各成员的类型可以不同*/{int num;char name[20];int age;float score;}; /*作为类型的定义,此行最后的“;”不可缺少*/ 2、再定义两个属于struct student类型的结构体变量stud1和stud2struct student stud1,stud2; /*其中“struct student”为结构体类型名*/ 这两个结构体变量stud1、stud2在内存中所占字节数均为28(=2+20+2+4)。
3、说明1)定义一个标准类型的变量时,只需指定类型名、变量名即可,如int i,j;2)而定义一个结构体变量时,不但要指定结构体类型,而且还必须指明是哪一种具体的结构体类型,如stud1,stud2;(student为具体的结构体名,而struct student整体则代表具体的结构体类型)。
结构体与共用体-枚举

枚举常量是枚举类型的成员,每个枚举常量都有一个整数值与之对应,默认从0 开始,也可以显式指定。
枚举变量
枚举变量的声明
使用枚举类型名称声明枚举变量,例如`enum Color color;`。
枚举变量的赋值
枚举变量只能赋值为枚举常量列表中定义的整数 值或对应的枚举常量名称。
枚举变量的使用
嵌套共用体
嵌套共用体是一个共用体内部包含另一个共 用体或结构体的情况。
共用体变量
声明
共用体变量的声明方式与结构体 变量类似,需要使用共用体类型 名来定义变量。
访问
访问共用体变量的成员需要使用 成员访问运算符(.),且每次只 能访问一个成员。
01
02
定义
共用体变量是用来存储共用体类 型数据的变量。
03
结构体与共用体-枚举
目录
• 结构体概述 • 共用体概述 • 枚举概述 • 结构体、共用体与枚举的关系 • 结构体、共用体与枚举的应用实例 • 总结与展望
01
结构体概述
定义与特点
01
结构体是一种用户自定义的数据类型,允许将不同类型的数据 组合成一个有机的整体。
02
结构体中的数据可以是基本数据类型,也可以是其他结构体类
未来发展趋势预测
01 02
结构化数据处理
随着大数据时代的到来,处理结构化数据变得越来越重要。结构体作为 一种表示结构化数据的数据类型,将在数据处理和分析领域发挥越来越 重要的作用。
内存优化
共用体可以在相同的内存位置存储不同的数据类型,从而节省内存空间。 在内存资源紧张的情况下,共用体的使用将变得更加重要。
04
当需要提高代码的可读性和可维护性时,可以使用枚举类型来代替一 些硬编码的常量值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1/9
第十二章 结构体与共用体 内容
Struct student {int num; ┄ char addr[30]; };
Struct student student1,student2;
说明
比较➢
2.在声明类型的同时定义变量 Struct student {int num; ┄ char addr[30]; } student1,student2;
第二讲
说明
4/9
难点➢
第十二章 结构体与共用体 一、如何使用指针变量指向结构体类型数据
┄ char addr[30]; }; Struct student student[10];
2.结构体数组的初始化 其初始化和数组的初始化相似。 3.结构体数组的应用举例
结构体数组 和数值型数 组不同之处 在于每个数 组元素都是 一个结构体 类型的数据。
定义了一个 student,其 元素为 Struct student 类型 数据,数组中 有 10 个元素。
for(j=0;j<3;j++) if(strcmp(leader_name,leader[j].name)==0) leader[j].count++; }
for(i=0;i<3;i++) printf(“%5s:%d\n”, leader[i].name ,leader[i].count);}
小结:
例 对候选人得票的统计程序。设有三个候选人,每次输入一个得 票的候选人的名字,要求最后输出各人得票结果。
程序如下: #include <stdio.h> struct person {char name[20];
int count; }leader[3]={“li”,0,“zhang”,0,“fun”,0}; main() {int i,j;char leader_name[20]; for(i=1;i<=10;i++) {scanf(“%s”, leader_name);
3.对结构体成员的运算和普通变量一样进行各种运算。
4.可以引用结构体变量的地址,也可引用结构体变量成员的地址。
五、结构体变量的初始化
和其它变量一样,对结构体变量可以在定义时指定初始值。
例如
{struct student
{long int num;
char name[20];
2/9
第十二章 结构体与共用体 内容
理解和掌握结构体的概念和方法 掌握结构体的基本操作 熟练掌握结构体的引用方法 了解结构体数组的使用
3/9
主要 内容➢
重点➢
第十二章 结构体与共用体
结构体与共用体
内容 1.指向结构体类型数据的指针 2.用指针处理链表 3.共用体 1.指向结构体类型数据的指针 2.用指针处理链表 指向结构体类型数据的指针;用指针处理链表
主要 内容➢
重点➢
难点➢ 问题 提出
第十二章 结构体与共用体
结构体与共用体
内容 1.结构体的概念及其基本操作 2.结构体的引用方法 3.结构体数组的使用 1.结构体的概念及基本操作 2.结构体的引用方法
第一讲
说明
结构体的概念及基本操作
前面已经介绍了基本数据类型──整型、浮点型、字符型,也介绍了 例子:
Char sex; Char addr[20]; }a={89031,“li lin”,‘M’,“123 beijing Road”};
说明
引言➢ 举例➢
六、结构体数组 一个结构体变量中可以存放一组数据。如果有 10 个学生的数据需
要参与运算,显然应该用数组,这就是结构体数组。
1.结构体数组的定义 Struct student {int num;
说明➢ 举例➢
举例➢
3.直接定义结构类型变量
Struct
{int num;
┄
char addr[30]; } student1,student2;
关于结构体类型的说明:
(1)类型与变量不同; (2)成员可单独使用,作用和地位相当于普通变量; (3)成员可以是一个结构体变量;
Struct date
只能对变量 赋值、存取或 运算,类型不 行。
和基本类型 变量进行比 较分析,进一 步说明必须 定义结构体 类型。
说明➢
Struct student 是一个类型名, Struct 是一个关键字,标志着这 是一个结构体类型。 二、声明一个结构体的形式
Struct 结构体名 {成员表列}; 其中,成员表列的格式为: 类型名 成员名; 三、定义结构体类型变量的方法 1.先声明结构体类型在定义变量名 已定义了一个结构体类型 Struct student,可以用它定义变量。
{ int month;
先声明一个
int day; int year; }
Struct date 类型,然后在 Struct
Struct student { int num;
┄ struct date birthday;
student 类型 时,将成员 Birthday 定 义为 Struct date 类型。
char addr[30]; } student1,student2;
(4)成员名可以和程序中的变量名相同,二者不代表用一个对象。
四、结构体变量的引用
结构体变量名.成员名 1.对结构体变量中的成员分别进行输入输出
如: Student.num
2.成员本身是结构体类型,只能对最低级的成员进行赋值等运算。
的简单变量,难以反映它们之间的内在联系,如何解决此类问题呢?
一、结构体类型引入 上例应该合数据组织成一个组合项,在一个组合项中包含若干个不
同类型数据项,C 语言没有提供这样的数据结构,因此用户必须在程序 中建立所需结构体类型。
Struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; };
一种构造类型──数组,数组中各元素是属于同一种类型的。
int a[5];
例如:一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项,
各项的数据类型并不相同(如下图)
num name sex age score addr
通过举例说
10010 Li Fan m 18 88e、sex、age、score、addr 分别定义为互相独立 体的必要性。