C语言程序设计7

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

int month;
int day; }; struct stu
date
name
sex score
year month day
{
char name[20];
struct birthday date;
char sex;
float score;
};
7.1.2 结构体变量
有了结构体类型,它仅相当于一个模型,但其中并无具体 数据,系统对它不分配实际内存单元,为了能在程序中使用结 构休类型的数据,就须在此类型基础上定义变量。结构体类型 变量因其所基于的类型是自定义的,故有三种形式的定义方法, 分别是:
}stu1,stu2;
形式三 无名定义,缺省了结构体名
1.结构体变量的定义
struct
{ 类型标识符 成员名; 类型标识符 成员名;
……………. }变量名表列;
例 struct { int num; char name[20]; char sex; int age; float score; char addr[30]; }stu1,stu2;
用无名结构体直接定义 变量只能一次
1.结构体变量的定义
– 说明
结构体类型与结构体变量概念不同
– 类型:不分配内存;
变量:分配内存
例{str例iuii{nnnctsttt结结timcdynr–dhe构构autoaaa类ycntrrn体体;tet型;unhs可成ma;:t不um;嵌 员d能ee[套名赋n2t0值与];、程存序取中、变运算量;名可变相量:同可以,不会混淆
形式一 先定义结构体类型,再定义结构体变量
1.结构体变量的定义
struct 结构体名
{
类型标识符 成员名;
例 struct student { int num;
例类型#d标e识fin符e S成T员U名D;ENT struct student }; …S…T…U…D…EN. T struct 结{ 构体i名nt n变u量m名; 表列;
第7章 结构体、共用体与枚举
7.1 结构体 7.2 共用体 7.3 枚举类型 7.4 类型的重新命名
7.1 结构体
7.1.1 结构体类型的定义 7.1.2 结构体类型变量 7.1.3 结构体数组
类型不同但相 基本互类型关联
整型 int
构造类型
结构体 struct
派生类型 数组类型
同一类型 数据的顺 序排列
() ()
}stu}1s,tsutu12,s;tu2;
7.1.3 结构体数组
结构体数组的定义 结构体数组的初始化 结构体数组的应用
1.结构体数组的定义
结构体类型既可以定义结构体变量,也可以定义结构体数组,用
以存储批量的数据,每个结构体数组元素又包含多个成员。结
构体数组中的各元素在内存中是连续存放的。 定义结构体数组的方法和定义结构体变量的方法相同,也有三种
成员类型可以是 基本型或构造型
7.1.1 结构体类型的定义
声明结构体类型时所必 须使用的关键字
在C语言中,用如下方式定义
struct student
{char num[10];
结构体类型的名称
char name[20];
char sex;
结构体成员列表,
char float
bsicrotrhed;在satyrsu[t8rcu]t;csttustduednetn和t包的类系括类型统每型起提个及作供结名用的构称的标体范准成围类员内型,(如int、
}stu; }stu;
2.结构体变量初始化
定义结构体变量后,就可给变量中的各个成员初始化。其初始化形式 如: struct stu {int num; char name[8]; char sex; float score; } p={1001,"Lili",'F',99.5};
3.结构体成员的引用
char tel[12c]h; ar、float、double等)一样具有同样的地
};
位和作用,都可以用分来号定不义可变少量的类型。
定义一个结构体类型的一般形式为:
struct 结构体名 { 成员表列 };
说明: (1)struct为结构体类型说明的关键字,是结构体类型定义的标识符。 (2)结构体名由用户定义,它与struct一起形成特定的结构体类型, 在以后的结构体变量定义中可以被使用。 (3)成员列表为本结构体类型所包含的若干个成员的列表,必需用{ } 括起来,并以分号结束。每个成员的形式为
共用体:其中所有成员均放在以同一地址开始的存储空间 中,使用 “共享”和“覆盖”的方式共享存储单元。共用体所 占的空间的大小取决于占存储空间最大的那个成员。
共用体类型的定义
union [共用体类型名] { 类型名 成员名; …… };
union u { char ch;
int i; float f; };
};
m{ 2asti.nat(结i)c st构ruc体t s c数ar[]组={ 的初始n化umber
color
type
{{s12t01r10u,,''cGYt ''结,,''mc'构}'}, , 体名
101
G
c
数组名[元素210个数]={{…Y },{…},…,m{…}};
105
R
l
{105,'R','l'},
类型标识符 成员名;
7.1.1 结构体类型的定义
【(4例)7整.1个】结构结体构类体型类的型定的义用嵌分套号。结束,花括号后边的分号不能缺省。
s(t5r)uc结t 构b体ir中th的d成ay员本身还可以是结构体,这称为结构体的嵌套。而且
{内嵌结构体成员的名字可以和外层成员名字相同。 int year;
形式二 定义结构体类型的同时定义结构体变量
1.结构体变量的定义
struct 结构体名
{ 类型标识符 成员名;
类型标识符 成员名;
例 struct student
……………. }变量名表列;
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
字符型数组、性别(sex)为字符型、出生日期(birthday) 为字
符型数结组构、成体绩是(s一co种re[构3])造为数实据型数类组型、,联系其电用话途(te是l) 把为字 不 的符型同 数数类 据组型类。图的型7数来-1显据使示组 用了合 。一学成生一的个信息整。体C语,言当允作许用一户个自新己指
字符型 char 实型 float 双精度型 Double 空值型 void
共用体(联合)型 union
指针类型
枚举型
enum
用户定义类型 构造数据类型(导出类 typedef 型):由基本数据类型 按一定规则组合而成的 。广义上包括表中的构 造类型和派生类型。
7.1 结构体
如我们可以规定学号(num)为字符型数组、姓名(name)为
}s; tu[2]; struct student stu[2];
num 29B name
sex age num name sex age
stu[0] stu[1]
2.结构体数组的初始化
struct s
{
cih1nat.rn结cuomlo构;r; 体数组的定义
cshtarrutcytp结e;构体类型名 结构体数组名[元素个数];
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;
int i;
printf("number color type\n");
for(i=0;i<5;i++)
printf("%-9d%-c\n",car[i].num,car[i].color,car[i].type);}
7.2 共用体
7.2.1 共用体类型的定义 7.2.2 共用体变量
7.2.1 共用体类型的定义
222
B
s
str{u22c2t,s'Btu',d'se'}n,t aatd[10]={{“zhan3g08ming”,18,’Pm’},{“Lipiabng”,20,’f’}};
{308,'P','b'}
s}t;ruct student aatd[]={{“zhang ming”,18,’m’},{“Lipiang”,20,’f’}};
图 7-1
7.1.1 结构体类型的定义
结构体是一种构造数据类型
用途:把不同类型的数据组合成一个整体-------自定义数 据类型
– 结构体类型定义:
struct是关键字, 不能省略
struct [结构体名]
{ 类型标识符 成员名; 类型标识符 成员名;
……………. };
合法标识符 可省:无名结构体
第7章
结构体、共用体与枚举
第7章 结构体、共用体与枚举
本章学习C语言的三种数据类型,分别是构造类型中的结 构体和共用体类型,以及基本类型中枚举类型。
本章先给出结构体类型的定义,着重讲述结构体变量的定 义、引用、初始化,结构体数组及结构体的应用;然后讲述共 用体和枚举类型;同时介绍动态分配内存的函数和typedef语 句。
}birthdsatryu;ct date
struct {stuidnetnmt onth; { int numi;nt day;
num num
name namemonth
birthday dbairythdayyear
char naminet[y2e0a];r;
month day year
struc}tbidrtahtedabyi;rthday;
对结构体的变量不能整体引用,必须逐级地访问到成员名。其引用形 式为:
结构体变量名.成员名
其中,圆点符号称为成员运算符。
3源自文库结构体成员的引用
– 引用方式: 结构体变量名.成员名
例 例
s{}s{ttsrrtu例uuc{c1可结tt,iccifcisccifcsn{}nnnllthhhhhhicst以构oorsbtstntuttaaahaaautatarinta2naurrrurrracut将体tgiiiug;utdrdsatsacnnnnsshnenmemeeededctnctttu一嵌d;a;saxn例xnododa;mmdy;tammd;t;turrmrr个套aeya[ee[;odeeya3;3例t;e;n[e[re;结 时00[22;ts{}n2]h]0t0st;;0r构逐;t]]u]u;;s{};c1t体级str,ticcifcusunnlhhh变引tco1sttsu成 优 结aaattat,niaccifc2uurrrs量用tnnl员 先 合ghhhsu1;tdosasttstu=nseaaamueedtapc赋(级 性na2t{;urrra2nxn分rtuod;g1u;i=umdsa;tns::1rr0值nemms从e量ede[ct1.1et;fa3xnbu;od(,;[左m)给““01;ti2rr运Wr%;e[]0et向3;;另h算ad[]n0n2;d,右a(%]符m0一aL;sy]ie,;n.%个m”) ,cm‘os结,Ms%tontuun’dt1s构s,1tht1,.thu%s.u=9ac1体1g,fo1i….8.,fesnbr%27(c+e变uis….d;or++5stmtaur\=h,;en.y量“1=.ds=”D=t1a,8u=sa0y25tLs;u..t5siy1uac;e)2(no;a)”rr)e};;
方式。如结构体类型既可以定义结构体变量,也可以定义结构 体数组,用以存储批量的数据,每个结构体数组元素又包含多 个成员。
1.结构体数组的定义
形式二一三:: stsrtuructctstsutuddenent t
{ int num; char name[20]; char sex; int age;
ch
i
f 图7-7 共用体存储
形式
7.2.2 共用体变量
1.共用体变量的定义
间接定义 直接定义 无名定义

分别定义类型和变量。
直接un定uinoi义non共变u 用u量ni体o而n类u无型类名型名。
定这样一种包含若干个类型不同(当然也可以相同)的数据项的
数据结构,它称为结构体(structure)。组成结构体的数据项成
为结构体成员。在其他高级语言中称其为“记录”。
num
name
sex birthday
score
tel
04010538
Liu li hua
F
83/05/28
78
90.5 85583173
相关文档
最新文档