C第11章 结构体与共用体
C语言第11章结构体
29
【例】30张选票,对三名侯选人之一投票选举,输 入得票人名字,按名字计数,输出最后选举结果。 #include "stdio.h" #define N 30 struct person { char name[20]; int count; };
Li
0 Zhang 0 Wang 0
led[0].name
第十一章 结构体与பைடு நூலகம்用体
本章目标
1.理解结构体,共用体的数据类型
2.学会定义结构体、共用体的数据类型 的变量 3.能够正确使用结构体、共用体的成员
§11.1
已了解的数据类型:
引言
整型 浮点型 字符型 数组
简单数据类型
用户定义的数据类型
特点:所有的元素都是同一种类型
指针型 存在的问题:难以处理较复杂的数据
18
圆点运算符
引用形式:结构体变量名 . 成员名 其中:成员运算符’ . ‟ : 一级,自左而右;
stu1.num 引用结构体变量stu1的num成员; 引用stu1的name成员(字符指针); [i] 引用name成员的第i个元素; stu1.birthday.y 只能对最低级成员进行引用;
二、定义完结构体后,定义结构变量并初始化 struct student x2={0002, "Li Ming ", 85.5};
16
§11.4 访问结构成员
访问结构变量实质上是引用其成员 有两种运算符可访问结构成员
17
struct date { int m; int d; iny y; }; struct student { long num; char name[20]; char sex; struct date birthday; float score; char tel[15]; } stu1, stu2;
C语言程序设计第十一章 结构体与共用体
11 结构体与共用体 (1)11.1 定义一个结构的一般形式 (1)11.2 结构类型变量的说明 (2)11.3 结构变量成员的表示方法 (4)11.4 结构变量的赋值 (4)11.5 结构变量的初始化 (5)11.6 结构数组的定义 (5)11.7 结构指针变量的说明和使用 (7)11.7.1 指向结构变量的指针 (7)11.7.2 指向结构数组的指针 (9)11.7.3 结构指针变量作函数参数 (10)11.8 动态存储分配 (11)11.9 链表的概念 (12)11.10 枚举类型 (14)11.10.1 枚举类型的定义和枚举变量的说明 (14)11.10.2 枚举类型变量的赋值和使用 (15)11.11 类型定义符typedef (16)11 结构体与共用体11.1 定义一个结构的一般形式在实际问题中,一组数据往往具有不同的数据类型。
例如,在学生登记表中,姓名应为字符型;学号可为整型或字符型;年龄应为整型;性别应为字符型;成绩可为整型或实型。
显然不能用一个数组来存放这一组数据。
因为数组中各元素的类型和长度都必须一致,以便于编译系统处理。
为了解决这个问题,C语言中给出了另一种构造数据类型——“结构(structure)”或叫“结构体”。
它相当于其它高级语言中的记录。
“结构”是一种构造类型,它是由若干“成员”组成的。
每一个成员可以是一个基本数据类型或者又是一个构造类型。
结构既是一种“构造”而成的数据类型,那么在说明和使用之前必须先定义它,也就是构造它。
如同在说明和调用函数之前要先定义函数一样。
定义一个结构的一般形式为:struct 结构名{成员表列};成员表列由若干个成员组成,每个成员都是该结构的一个组成部分。
对每个成员也必须作类型说明,其形式为:类型说明符成员名;成员名的命名应符合标识符的书写规定。
例如:struct stu{int num;char name[20];char sex;float score;};在这个结构定义中,结构名为stu,该结构由4个成员组成。
C语言程序设计(姜学峰版)PPT课件第十一章
8
5)定义结构体类型仅仅声明了一种数据结构,编译 系统不会为类型分配存储空间的;此时可用已定 义的结构体类型去定义结构体变量或数组,编译 系统将为结构体变量分配存储空间;
9
2. 定义结构体类型的变量 有三种方法: 1)先定义结构体类型,再用类型标识去定义变量 struct student stu1, stu2; struct student是已定义的结构体类型标识符; stu1、stu2是所定义的结构体变量;编译时将为 结构体变量分配各自的存储空间; 2)定义类型的同时定义变量 struct student { …; …; } stu1, stu2;
18
5. 结构体变量的指针、结构体成员的指针 注:&优先级为2级,低于.和[ ]; stu1 变量stu1的指针:&stu1 图示: num
num成员指针:&stu1. num
4
20 1
name第i个元素指针:&stu1. name[i]
name sex m
┇
birthday d 最低级成员y的指针:&stu1.birthday.y y score
5
例:定义可表示学生基本情况的结构体类型。
项目: 学号 姓名 性别 出生日期 成绩 电话号码 数据: 010510 Li Feng M 1981.5.4 680 029-8482500
类型: 长整/字串 字串
字符
字串
整型
字串
struct student /*结构体类型标识*/ { long num; char name[20]; char sex; char birthday[12]; float score; char tel[15]; };
c程序设计 第十一章 结构体与共用体
11.2 定义结构体类型变量的方法
• 4、对结构体中的成员,可以单独使用,他的作用与地位 • 相当于普通变量。
11.3 结构体变量的引用
• • • • • • • • • • • 引用形式: 结构体变量名.成员名 规则: 1、不能将结构体变量作为一个整体进行赋值、输入和输 出,只能对结构体中的各个成员分别进行;但允许将一个 结构体变量直接赋值给另一个具有相同结构的结构体变 量。 如: student1.num=10010; student1=student2; 2、如果成员本身又属一个结构体类型,则要用若干个成 员运算符,一级一级地找到最低的一级的成员。只能对最 低级的成员进行赋值或存取以及运算。 如:student1.num student1.birthday.month
11.6 指向结构体类型数据的指针
• • • • • • • • • • • • • • 试分析以下几种运算: p -> n p -> n++ ++ p -> n 例11.3 指向结构体变量的指针的应用 #include<stdio.h> #include<string.h> void main( ) { struct student { long num; char name[20]; char sex; float score; };
11.5 结构体数组
• • • • • • • • • 例10.2 候选人得票的统计程序。设三个候选人,每次输 入一个得票的候选人的名字,要求最后输出候选人的得票 结果。 #include<stdio.h> #include<string.h> struct person { char name[20]; int count; } leader[3]={“Li”, 0, “Zhang”, 0, “wang”, 0};
C语言 第十一章 结构体与共用体
第十一章结构体与共用体一、选择题1.【C】分析:C题目中是使用了typedef struct NODE,那么我们一定要指导tepydef就是替代的意思。
所以是用OLD来替代struct NODE作为结构体的类型。
同时我们要记住这里的NODE是可以省略的。
2.【B】分析:本题是考查结构体的定义。
A选项是我们一定要记住的,C选项中的x、y、z是写在结构体里面,所以它们都是结构体的成员,D选项中我们知道struct ex的组合是结构体的类型,这两个缺一不可。
选项B中的example是结构体变量名,一般在右大括号后面的是结构体变量名。
3.【B】分析:INTEGER p等价于int *p。
所以B是正确的。
INTEGER *q等价于int **q。
4.【C】分析:在本题中TT为结构体名,用关键字typedef对结构体进行说明,CIN一个具体的结构体类型名等价于struct TT, 可以用CIN来直接定义结构体变量,而不用再写struct。
A:答案不能用TT直接定义结构体变量,一般格式为(struct TT 结构体变量名);B:答案概念错误,D:答案CIN不是结构体变量,是一个具体的结构体类型名。
5.【C】分析:本题和第一题类似,也是对结构体定义的typedef的考查,B中ST不是结构体类型了,被NEW替代了,选项D中我们知道NEW是一个结构体类型,所以不是结构体变量,当出现了typedef struct 这样的定义时,在右括号出现的NEW就是结构体类型,不是结构体变量了。
6.【A】分析:由于typedef struct S 是替换的意思,所以本题目中是用T来代替struct S这个结构体类型,所以T的左右等于了struct S的作用了,也就是可以用T来定义结构体变量,如T born 中的born就是结构体变量。
当然,struct S就失去了原来的作用,不可以用来作结构体类型了。
7.【C】分析:考查的是结构体变量的赋值,data是一个结构体变量,data是用两个域的,一个是a,一个是b。
C语言编程:第十一章结构体与共用体
10010 Li Fun M 18 87.5 Bejing
Zhang Sumin (South China Agriculture University Computer Department ,Guangzhou 510640) zsmhome@
Zhang Sumin (South China Agriculture University Computer Department ,Guangzhou 510640) zsmhome@
11.3 结构体变量的引用
结构体变量的引用应该遵循以下原则 • 1)不能将一个结构体变量作为一个整体进行输入和
2)结构体名同标识 符命名规则;
3)分号不能省略
4)成员列表又称“域表”,每个成员也称为域。
5)指定一个结构体类型相当于指定了一个模型,它无 数据,系统对其不分配实际内存单元。
Zhang Sumin (South China Agriculture University Computer Department ,Guangzhou 510640) zsmhome@
struct { int num;
char name[10]; char sex;
int age; float score; char addr[30]; } student1,student2;
(3)
Zhang Sumin (South China Agriculture University Computer Department ,Guangzhou 510640) zsmhome@
C语言程序设计课件0911结构体与共用体
指向结构体变量的指针
格式:struct 结构体名 * 指针名; struct Item w={“friend”, 7}; struct Item *p; 上例可合并为: struct Item w={“friend”, 7}, *p;
指向成员运算符
可用指向结构体变量的指针来访问其成员, 这时要用到”指向成员运算符“,例如: struct Item w={“friend”, 7}, *p=&w; printf(“word=[%s], freq=%d\”, p->word, p->freq); // 此时等价于: w.word, w.freq 指向成员运算符与成员运算符的优先级都 是1,都是自左至右结合。
结构体类型的嵌套
struct Date { int year, month, day; }; struct Student { int num; char name[20], sex, addr[30]; float score; struct Date birthday; };
用typedef定义结构体类型名
结构体数组的定义
与结构体变量的定义方式类似,也有三种方 式,只需指明是数组即可。例如:
struct Item ws[3]; struct Item {char word[12]; int freq;} ws[3]; struct {char word[12]; int freq;} ws[3];
C语言第11讲--结构体和共用体
如:方式(2) 方式 struct student int score[4];}
{long num;char name[20];
结构体数组初始化
a[3]={{20030001,"zhang",89,90,91,92}, {20030002,"liu",68,69,70,71}, {20030003,"li",57,58,59,60} };
第十三讲 特殊数据类型
—— 结构体、共用体、 结构体、共用体、 枚举类型、 枚举类型、自定义类型
§11.1 结构体和共用体概述
数组可以存放一组相关的同类型数据, 数组可以存放一组相关的同类型数据,但是 一组相关的同类型数据 不能将不同类型的数据放入同一数组中。 不能将不同类型的数据放入同一数组中。 如果需要把一个学生的学号、姓名、性别、 如果需要把一个学生的学号、姓名、性别、 年龄、各门功课的考试成绩等不同类型的数 年龄、各门功课的考试成绩等不同类型的数 放在一个构造型数据类型中, 据放在一个构造型数据类型中,就需要另外 一种新的数据类型: 一种新的数据类型:结构体类型或者共用体 类型数据 数据。 类型数据。 一个结构体类型的变量中可以独立存放多种 类型的数据,一个共用体 共用体类型的变量中可以 类型的数据,一个共用体类型的变量中可以 共用同一段存储单元来存放不同类型的数据 来存放不同类型的数据。 共用同一段存储单元来存放不同类型的数据。
4
三、对结构体类型的说明
结构体类型与结构体类型变量是两个概念, 结构体类型与结构体类型变量是两个概念, 应区分结构体名与变量名。 应区分结构体名与变量名。 成员也可以是一个结构体变量。 成员也可以是一个结构体变量。
C语言-结构体与共用体
(1)“结构类型名”和“数据项”的命名规则,与变量 名相同。 (2)数据类型相同的数据项,既可逐个、逐行分别定义, 也可合并成一行定义。 例如,上例中的日期结构类型,也可改为如下形式: struct date {int year, month, day; }; (3)结构类型中的数据项,既可以是基本数据类型,也 允许是另一个已经定义的结构类型。 例如,上例中的结构类型std_info,其数据项“birthday” 就是一个已经定义的日期结构类型date。 (4)本书将1个数据项称为结构类型的1个成员(或分 量)。
/*主函数main()*/ main() { int i; /* 打 印 表 头 : " □" 表 示 1 个 空 格 字 符 * / printf("No.□□□□Name□□□□□Sex□Birthday\n"); /*输出三个学生的基本情况*/ for(i=0; i<3; i++) { printf("%-7s",student[i].no); printf("%-9s",student[i].name); printf("%-4s",student[i].sex); printf("%d-%d-%d\n",student[i].birthday.year, student[i].birthday.month, student[i].birthday.day); } }
11.2
定义结构体类型变量的方法
声明一个结构体类型的一般形式: struct 结构类型名 /* struct是结构类型关键字*/ {数据类型 数据项1; 数据类型 数据项2; …… …… 数据类型 数据项n; }; /* 此行分号不能少!*/
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。
第11章C语言的结构体和共用体
3、仅在以下两种情况下,可以把结构体变量 作为一个整体来访问。 (1) 结构体变量整体赋值,例、 student2 = student1; (2)取结构体变量地址,例、 printf("%x", &student1);
返回本章目录
§11.4 结构体变量的 struct student 初始化
{ long int num;
三、共用体类型数据的特点 1、共用体变量中的值是最后一次存放的 成员的值,如: a.i = 1; a.ch = 'a'; a.f = 1.5; 完成以上三个赋值语句后,共用体变量 的值是1.5,而a.i=1和a.ch=‘a’已无意义。
2、共用体变量不能初始化,例、 union data { int i; char ch; float f; }a={1,'a', 1.5};
union data { int i; char ch; float f; }
注意区分: “共用体”:各成员占相同的起始地址, 所占内存长度等于最长的成员所占内存。 “结构体”:各成员占不同的地址,所占 内存长度等于全部成员所占内存之和。
二、共用体变量的引用
只能引用共用体变量的成员,如、 union data a; a.i; a.ch; a.f;
但在定义枚举类型时,可以指定枚举常量的 值,如、
enum weekday {sun=7, mon=1, tue, wed, thu, fri, sat};
此时,tue、wed、...的值从mon的值顺序加1。如, tue=2。
3、枚举值可以作判断,例、
if (weekday == mon).... if (weekday > sun).... 4、整型与枚举类型是不同的数据类型,不能直接 赋值,如、 workday = 2; /* workday是枚举类型 */
C++课件:第11章结构体与共用体
C++课件:第11章结构体与共用体
例11.2 定义一个结构体类型,包含通讯录中的如下信息: 姓名、年龄、电话、通讯地址;并定义该类型的变量, 输入数据并输出。
程序l11_2.c
#include "stdio.h" struct address_list {char name[10];
/*{}内是该类型的各成员*/
char sex;
int age;
char position[10];
float salary; };
/*语句末尾是“;” */
该结构体类型名为struct teacher,teacher 是该结构体的标识符; 该类型包含有6个成员的数据项:name、 sex、 age、 position 和salary,其中每个成员项都有自己的类型。
}; struct teacher person; /*定义结构体变量person*/
strcpy(,"wang li");
person.sex=‘f’;
/*给各成员赋值*/
person.age=30;
strcpy(person.position,"middle");
person.salary=1600;
C++第11章结构体与共用体
C++课件:第11章结构体与共用体
1、结构体类型的定义 2、结构体变量的定义及引用 3、结构体数组 4、结构体类型的指针 5、链表的基本操作 6、共用体和枚举类型(了解)
C++课件:第11章结构体与共用体
第十一章结构体与共用体
定义结构体类型
struct 结构体名 {
数据类型 成员名 1; “域” 数据类型 成员名 2;
: 数据类型 成员名 n; }; /*分号不能省略*/第十一章结构体与共用体
结构嵌套
涵义:结构体的成员项也是结构体 只能对最内层结构(最低一级)的成员
项进行赋值或存取,以及运算。 内层结构成员的引用形式:
numbre Name[6] sex age Address[20]
… … 本质上,它定义了一个名为”student”的“结构体类型” 。struct student 相当于标准数据类型关键字char, int ,float…我们可以 用它来定义“结构体变量”。
注意成员定义与普通变量定义的区别: 成员定义时——不为其分配内存 变量定义时——为其分配内存
第十一章结构体与共用体
11.2定义结构体类型变量的方法
1、先定义结构类型,后说明变量
struct 结构名 结构变量名; 注意:
– 结构变量说明必须在结构类型定义之后
例 struct student stul, stu2;
stu1 1001 Zhang Xin m 19 90.5 Shanghai stu2 1002 Wang Li f 20 98 Beijing
{
…
…
} stu[3]第;十一章结构体与共用体
例11.2 (p266)候选人得票统计程序。(三个候选人)
· 分析:
– 数据结构: 定义结构体数组变量,含侯选人名,得票数。 数组有3个元素
– 算法要点: 采用strcmp()函数, 将输入的人名与定义初始化的结构体数组中的每一 元素中候选人名比较,若相同则加1。
C语言 第11章pj 结构体与共用体
例:static struct date birthdate={14,“sep”,1950},
nationalday={1,“Oct”,1949},
hiredate={2,“Dec”,1970};
例:struct employee { char name[20]; double salary; long int tel; char sex; struct date birthdate; }person1=\ {“H.Y.Jiang”,960.86,6634107,„M‟,14,“Sep”,1950}, person2=\ {“H.S.Chen”,1200.36,66342987,„M‟,23,“Jul”,1937}, person3=\ {“C.J.Zhang”,650.86,6634623,„F‟,18,“May”,1963};
§3 结构体变量的引用
结构变量的一般表示形式为: 结构变量名.成员名
例:struct student stu1,stu2; stu1. sex=„F‟; stu1. score=87.5; strcpy(stu2. addr , ”127 Nanjing road”); sum=stu1.score+stu2. score ; scanf(“%d” , &stu1.age); scanf(“%s”, stu1. name); stu1. name=“C.S.Sun”; ?
struct student 或 struct { int num; { int num; char name[20]; char name[20]; char sex; char sex; float score; float score; char addr[30]; char addr[30]; } stu[3]; }stu[3];
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
struct是关键字, 不能省略
num
2字节
…
name
20字节 1字节 2字节ห้องสมุดไป่ตู้4字节
例 struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; };
sex age score
…..
一般形式:
例
{ int num; int num; char name[20]; char name[20]; char sex; char sex; int age; int age; float score; float score; char addr[30]; char addr[30]; }; }; STUDENT stu1,stu2; struct student stu1,stu2; {
直接定义结构体变量
一般形式:
struct { 类型标识符 成员名; 类型标识符 成员名; ……………. }变量名表列; 用无名结构体直接定义 变量只能一次
例 struct { int num; char name[20]; char sex; int age; float score; char addr[30]; }stu1,stu2;
说明
结构体类型与结构体变量概念不同
类型:不分配内存; 类型:不能赋值、存取、运算; 变量:分配内存 变量:可以
结构体可嵌套 结构体成员名与程序中变量名可相同,不会混淆 例 struct date 结构体类型及变量的作用域与生存期 { 例 struct student int month; { int num; int day; int char name[20]; year; struct date }; birthday struct { int month; student num name birthday int day; year num namemonth day { int num; month day year int year; char name[20]; }birthday; struct date birthday; }stu;}stu;
定义结构体类型的同时定义结构体变量
一般形式:
struct 结构体名 { 类型标识符 成员名; 类型标识符 成员名; ……………. }变量名表列;
例 struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }stu1,stu2;
addr
30字节
结构体类型定义描述结构 的组织形式,不分配内存
§11.2 结构体变量的定义
先定义结构体类型,再定义结构体变量
struct 结构体名 { 类型标识符 成员名; 类型标识符 成员名; 例 #define ……………. STUDENT struct student }; STUDENT struct student struct 结构体名 变量名表列;
count 0
0 0
§11.6 结构体和指针
main() 指向结构体变量的指针 { struct student 定义形式:struct 结构体名 *结构体指针名; { 例 struct student *p; long int num; char name[20]; 使用结构体指针变量引用成员形式 struct student 存放结构体变量在内存的起始地址 char sex; p num { score; float int num; (*结构体指针名).成员名 结构体指针名->成员名 例 int n; struct student 结构体变量名.成员名 namestu1; char name[20]; }stu_1,*p; stu int *p=&n; struct student sex *p=&stu1; 例 p=&stu_1;char sex; 指向结构体的指针变量 *p=10; 指向运算符 stu1.num=101; age (*p).num=101 n=10 int age; stu_1.num=89101; }stu; 优先级: 1 strcpy(stu_,"Li Lin"); 结合方向:从左向右 struct student *p=&stu; p->sex='M'; p->score=89.5; printf("\nNo:%ld\nname:%s\nsex:%c\nscore:%f\n", (*p).num,p->name,stu_1.sex,p->score); }
指向结构体数组的指针
例 指向结构体数组的指针 struct student p num { int num; name char name[20]; sex char sex; age p+1 int age; }stu[3]={{10101,"Li Lin",'M',18}, {10102,"Zhang Fun",'M',19}, {10104,"Wang Min",'F',20}}; main() { struct student *p; for(p=stu;p<stu+3;p++) printf("%d%s%c%d\n",p->num,p->name,p->sex,p->age); }
全部初始化时维数可省
例 统计后选人选票
struct person name { char name[20]; Li int count; Zhang }leader[3]={“Li”,0,“Zhang”,0,”Wang“,0}; main() Wang { int i,j; char leader_name[20]; for(i=1;i<=10;i++) { scanf("%s",leader_name); 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); }
形式三:
struct { 类型标识符 成员名; 类型标识符 成员名; ……………. }结构体变量={初始数据};
例 struct { int num; char name[20]; char sex; int age; char addr[30]; }stu1={112,“Wang Lin”,„M‟,19, “200 Beijing Road”};
§11.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;
第十一章 结构体与共用体
§11.1 结构体
结构体是一种构造数据类型 用途:把不同类型的数据组合成一个整体------自定义数据类型 结构体类型定义
合法标识符 可省:无名结构体 成员类型可以是 基本型或构造型
struct [结构体名] { 类型标识符 成员名; 类型标识符 成员名; ……………. };
§11.5 结构体数组
结构体数组的定义
三种形式: 形式一: struct student 形式二: { int num; struct student 形式三: char name[20]; { int num; struct char sex; char name[20]; { int num; int sex; charage; }; char name[20]; int age; char sex; struct student stu[2]; }stu[2]; int age; }stu[2];