c语言程序设计第14章 结构体共用体和用户定义类型-海贝
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
num name
birthday
month day year
int day; int year;
}birthday;
}stu;
三、 结构体变量的初始化
struct 结构体名 {
类型标识符 成员名;
初始类化型时标不识允符许跳成过员前名面;的成员给后面的成 员};赋值…,…但…可…以…只. 给前面的成员赋值,后面 未st赋ruc值t 结的构数体值名数据结按构0体处变理量,={字初符始数数据据按};‘\0’
float score; char addr[30]; }stu1,stu2;
float score; char addr[30];
} stu1,stu2;
3. 直接定义结构体变量
struct {
类型标识符 成员名; 类型标识符 成员名;
……………. } 变量名表列;
4. 先用typedef说明一个结构体类型名, 再用新类型名来定义变量
说明:
1. 结构体类型与结构体变量概念不同
结构体类型
结构体变量
不分配内存;
分配内存
不能赋值、存取、运算; 可以
2. 结构体成员名与程序中变量名可例相st同ruc,t s不tud会en混t 淆
3. 结构体可嵌套
{ int num; char name[20];
struct date
{ int month;
一、结构体类型定义(说明)
struct 是关键字, 不能省略
合法标识符
struct [结构体名] 可省:无名结构体 {
类型标识符 成员名;
类型标识符 成员名;
…………….
};
成员类型可以是
基本型或构造型
num
例 struct student
name
{ short num;
sex
age
char name[20];
(3) (*ps).sex 说明:1. 不能整体引用,只能引用变量成员
2. 可例例以stsr将turcut一c例tst个usdtu结esdntretu构nctt体st变ud量ent赋值给另一个结构体变量 例3. s{t结ru{c构tic例nics{hn体tshtarttanuurr嵌ucnds{ntnmueticcaarmn套d;hhummtaa;cneterrt时e{ic[u[sn22hnmest00逐aaxtn;]]urm;;;ud级iccenmenhh[ant2;aam引tn0srrteu]su;[用nme12ax.0;mb;]i;ert[ph2=d0a]&;y.smtuon2sstttuhu11=..s1ncu2om;re==1805;.5;
char sex;
score
short age;
float score;
源自文库addr
char addr[30];
};
…..
…
2字节 20字节 1字节 2字节
4字节
30字节
结构体类型定义描述结构 的组织形式,不分配内存
二、 结构体变量的定义
1. 先定义结构体类型,再定义结构体变量
struct student { int num;
第 14 章 结构体与共用体和用户定义类型
第 一 节 用户定义类型
第 14 章 结构体与共用体和用户定义类型
第 一 节 用户定义类型
用户自定义类型
功能:用自定义名字为已有数据类型命名 类型定义简单形式: typedef type name;
例 typede类f 型in定t I义NT语E句G已E关R有键;数字据类例型用I名N户T定EG义E的R 类a,型b,c名; REAL f1,f2;
typedef struct {
char name[12]; char sex; struct date birthday; float sc[4]; } STREC; STREC std, pers[3], *pstd
struct date { int year;
int mouth; int day; };
,字符例串数stru据ct按st空ude串nt 处理。
{ int num; char name[20]; char sex; int age;
}; struct student stu1={112,“Wang Lin”,‘M’,19};
四、结构体变量的引用
引用方式:(1) (2)
结 指构 针体 变变 量因量 名不.名-能>运成.写成算员成员符名名的*p级s.s别ex高,
STU stu1,stu2;
2. 定义结构体类型的同时定义结构体变量
struct student
struct
{ int num;
{ int num;
char name[2用0];无名结构体直接定义char name[20];
char sex; 变量只能一次
char sex;
int age;
int age;
char name[20]; char sex; int age; float score; char addr[30]; };
struct student stu1,stu2;
#define STU struct student STU { int num;
char name[20]; char sex; int age; float score; char addr[30]; };
cifc{}nl}hhbotsaaiatrarruiiittgnnnhsa1settteddc,ifc;sxmdynaodlhto;aeytrruaoa[eya;a2r3nt;r;}gcifc,;0atnslshhe*od]ctt;aa;puaodarrt;1rrgsa[e,sifces3ed;nclsh;tox0odttuaua;]rrsa2r1;t[etg;=u3pa;sne2{r0dcui=;1n]dom0s;trrtf1u[e(,“31“;%Wis;0fnt]da(ua;,nsm%(1tLi…eus.fi,s(n%1s…cm)”ts.ucso,tao‘.t,u1.%Munrg1=1et.d=he’s.=,a,sc1=%gto9pube=rf,2i(+-ed8,r%)(+>a7t+h*)y=.;ss5d\ps,ncat“u)y”oD.,2syara.tseeLugca1ioera)rn;)e”;}; (() )
例 typedef float REAL;
说明:
类型定义后int,与a,已b,c有; 类型一样使用
1.typedef 没有创造新数据类型
float f1,f2;
2.typedef 是定义类型,不能定义变量
3.typedef 与 define 不同
第二节 结构体类型
概述:
结构体是一种构造数据类型 用途:把不同类型的数据组合成一个整体