第9章 结构体与共用体(链表)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
struct student
{int no;
/*学号*/
char name[10]; /*姓名*/
char sex;
/*性别*/
int age;
/*年龄*/
float score;
/*C成绩*/
};注:‘;’不能省 结构体类型定义描述结构
的组织形式,不分配内存
如考虑10门课程成绩, 加上总成绩与平均
例结 淆{构。st体r例uii{nn成ctsttimt员dnrdauto名aycntn;te与tuhsm;程tu;序de中nt其它变量名可相同,两者不代表同一对象,不会混
int cyehaarr;name[20];
};
struct date
struct {stuidnet nmtonth; { int numi;nt day;
成绩,可作如下定义:
struct student
{int no;
/*学号*/
char name[10]; /*姓名*/
char sex;
/*性别*/
int age;
/*年龄*/
float score[10]; /*10门课程成绩*/
float tcj, acj; /*总成绩, 平均成绩*/
};
• 定义结构体类型,描述下列数据
用无名结构体直接定义变量,只 能一次,不能在再需要时使用所 定义的结构体类型。
结构体类型声明的说明
• 说明
结构体类型与结构体变量概念不同
• 类型:不分配内存;
变量:分配内存
• 类型:不能赋值、存取、运算; 变量:可以
对于结构体中的成员,可以单独使用,它的作用与地位相当于普通变量。
结构体可嵌套,其成员也可以是一个结构体变量。
};
(3)日期结构体类型包括 年、月、日:
struct date {int year; /*年*/ month; /*月*/ day; /*日*/ };
(4)如职工信息结构体类型:
struct person
{
char name[20];
/*姓名*/
char address[40]; /*地址*/
float salary;
–(2)个人数据: 包含姓名、性别、年龄、身高、体重、 住址:
struct person
{char name[20]; /*姓名*/
char sex;
/*性别*/
int age;
/*年龄*/
float height;
/*身高*/
float weight;
/*体重*/
char addr[50]; /*住址*/
结构体变量不能整体引用,只能引用变量成员
引用方式: 结构体变量名.成员名
例 例
s{}s{sttrrtu可结uu例c1c{构以it,itccifcnccisnnslnhhho{hhttittt体将csstnusaaaraaannahttuatt2rrrtrrruuu嵌一guaicgu;issandsmnndnermtneccedtee套个u;tean;ta;xod;sxmnmnmdam例;rrt;时结dttaemuo[;eea3y;dn[构逐e[t0;2例e2te[]hs0{}2n0;体级st];0]tr;t;]uu变引;s{}c1stitr,ccifc量用tnsnuluhhhotttc1su赋aaaanitas,tccifc2nrrrtsnuulgthhho值;ttsasutdmsneuaaaanced1aet;a2rrr给t;xouspud=gnm;sas;trdr{mrnetu另ei1c[den;a31;;0xod[ntm0.一21;rfrbt](e0[,e;“i“3;]个r[%W;0t2h]0d结a;d成优结],n;a%构员先合yLs.im体,(级性n%分”os::变sc,nt‘s量从t,usMt%u1t量ht1u)左1’ud.,=1运s.11a,1向.ci…9%.sgf算2nbo,(c右8e;fsu…iro,符r7+t%emtur..+h+5e.s1=;d==,\=“1nsa8D=0ty”5u;sa,.st52Lut;.(ius2a1c))n)o”;r}e; ;(())
• 直接定义结构体变量
一般形式:
例 struct { int num; char name[20]; char sex; int age; float score; char addr[30]; }stu1,stu2;
struct {
类型标识符 成员名; 类型标识符 成员名;
……………. }变量名表列;
例 struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }stu1,stu2;
struct 结构体名 {
类型标识符 成员名; 类型标识符 成员名;
……………. }变量名表列;
结构体类型变量的定义(3)
例 struct student { int num; char name[20];
例
类型标识符 成员名;
#define STU…DE…N…T …s…tr.uct student
};
STUDENsTtruct 结构体名 变量名表列;
char sex;
{ int num;
int age;
char name[20];
Num name sex age addr
应当10把0它10们1 组L织i成F一un个组M合项,1在8一个B组ei合jing
项中包含若干个类型不同(当然也可以相同)
图11-1
的数据项。
结构体类型的定义
• 结构体
– 结构体是一种构造数据类型
– 用途:把不同类型的数据组合成一个整体---自定义数据 类型
float score;
char sex;
char addr[30];
int age;
};
float score;
struct student stu1,stu2;
char addr[30];
};
STUDENT stu1,stu2;
结构体类型变量的定义(2)
• 定义结构体类型的同时定义结构体变量
一般形式:
/*工资*/
float cost;
/*扣款*/
struct date hiredate; /*聘任日期*/
};
结构体类型可以嵌套定义即一个结 构体类型中的某些成员又是其他结 构体类型
结构体类型变量的定义(1)
• 先定义结构体类型,再定义结构体变量
一般形式:
struct 结构体名
{
类型标识符 成员名;
– 结构体类型定义
struct是关键字, 不能省略
struct [结构体名] {
类型标识符 成员名1; 类型标识符 成员名2;
……………. };
合法标识符 可省:无名结构体
成员类型可以是 基本型或构造型
结构体类型的定义
பைடு நூலகம்
• 定义结构体类型,描述下列数据
– (1) 学生情况: 包含学生的学号、 姓名、 性别、 年龄、C语言 课程成绩:
第九章 结构体与链表
北京邮电大学出版社
内容提要
• 结构体类型的定义 • 结构体类型变量 • 结构体类型数组 • 结构体类型指针 • 结构体与函数 • 链表
§11.1 概述
问题定义: 有时需要将不同类型的数据组合成一个有机
的整体,以便于引用。如: 一个学生有学号/姓名/性别/年龄/地址等属性 int num; char name[20]; char sex; int age; char addr[30];
char naminet [y2e0a];r;
num num
name namme onth
birthday dbairythdyaeyar
month day year
struc}bt irdtahtdeayb;irthday;
}stu; }stu;
结构体变量的使用(1)
• 由结构体变量名引用其成员