c语言用户自定义数据类型
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11.1.3 引用结构体变量
(2) 如果成员本身又属一个注结意构:体类型,则要用
若干个成员运算符,一不级能一用级地找到最低 的 赋一 值级 或的 存成取员以。及只运能算s对。t最ud低en级t1的.成bi员rt进hd行ay
例如: 对上面定义的结构体来变访量问stsutduednte1n,t1可变
以这样访问各成员: 量中的成员
第十一章
本章要点
结构体的概念 结构体的定义和引用 结构体数组
主要内容
11.1 结构体类型和结构体变量 11.2 结构体数组 11.3 结构体指针 11.4 用指针处理链表 11.5 共用体类型 11.6 枚举类型 11.7 用typedef命名类型
§11.1 结构体类型和结构体变量
11.1.1 结构体类型 问题定义:
有时需要将不同类型的数据组合成一个有机
的整体,以便于引用。如:
一个学生有学号/姓名/性别/年龄/地址等属性 int num; char name[20]; char sex;
int age; int char addr[30];
应Nu当m把它n们am组e织成sex一个a组ge合项,sc在or一e 个ad组d合r
即不出现结构体名。
(3) 对结构体变量中的成员( 即“域”),可以单独使用, 它的作用与地位相当于普通变 量。
11.1.3 引用结构体变量
在定义了结构体变量以后,当然可以引用 这个变量。但应遵守以下规则:
(1)同类的结构体变量可以互相赋值,如: student1=student2;
不能将一个结构体变量作为一个整体进 行输入和输出。
student2
float score;
char addr[30];
}student1,student2;
11.1.2 定义结构体类型变量
(3) 不指定类型名而直接定义结构体类型变量
其一般形式为: struct {
注意: (1) 结构体类型与结构体变量
成员表列 (2) 结构体类型中的成员名可 }变量名表列以;与程序中的变量名相同,但二
student2.score=studentd1.escnorte;1.age
sum=student1.score+stu进de行nt自2.加sc运or算e,; 而不
student1.age++; ++student2.age;
是先对age进行自 加运算。
11.1.3 引用结构体变量
(4) 可以引用结构体变量成员的地址,也可以 引用结构体变量的地址。
student1.num
birthday,因为
student1.birthday.monbtihrthday本身是一
个结构体变量。
11.1.3 引用结构体变量
(3) 对结构体变量的成员可以像普通变量一样
进行各种运算(根据其由类于型“决.定”可运以算进符行的
的运算)。
优先级最高,因此s
例如:
tudent1.a ge++是对stu
出的。
11.1.2 定义结构体类型变量
可以采取以下3种方法定义结构体类型变 量:
(1)先声明结构体类型再定义变量名
例如:struct student student1, student2;
|
|
|
结构体类型名
结构体变量名
Stu 1
100102 WangLi F
20 118 Beijing
定义了student1和student2为struct student
int age;float score;char addr[30];
}
类型名
成员名
§11.1 结构体类型和结构体变量
11.1.1 结构体类型
说明:
(1)结构体类型并不是只有一种,而是可以设计出许 多种结构体类型.
(2) 成员也可以是一个结构体变量。 (3)“结构体”这个词是根据英文单词structure译
(2)在声明类型的同时定义变量 这种形式的定义的一般形式为: struct 结构体名 { 成员表列 }变量名表列;
11.1.2 定义结构体类型变量 例如:
struct student
{
int num;
char name[20];
char sex;
int age;
它的作用与第一 种方法相同,即 定义了两个struct student 类型的变 量student1,
例如:
•
scanf(″%d″,&student1.num);
(输入student1.num的值)
•
printf(″%o″,&student1);
(输出student1的首地址)
11.1.3 引用结构体变量
但不能用以下语句整体读入结构体变量, 例如: scanf(″%d,%s,%c,%d,%f,%s″,
项1中00包101含若Li干Fu个n 类型M不同(18当然8也7.5可以相B同eiji)ng
的数据项。
图11-1
§11.1 结构体类型和结构体变量
11.1.1 结构体类型
声明一个结构体类型的一般形式为:
struct 结构体名 结构体名 {成员表列};
如:struct student
{
int num;ar name[20];char sex;
Stu类2 型的10变010量1 Z,eng即Xin它M们具11有1 s1t10r.5ucSthansgthaui dent
类型的结构. 图11-2
11.1.2 定义结构体类型变量
在定义了结构体变量后,系统会为之分配内 存单元。
例如:student1和student2在Turbo C的内存 中各占511个字节(2+20+1+2+4+30=511) 。
例如: 已定义student1和student2为结构体变 量并且它们已有值。
printf(″%d,%s,%c,%d,%f,%\n″,student1);
11.1.3 引用结构体变量
引用结构体变量中成员的方式为
结构体变量名.成员名
例如: student1.num表示student1变量中的num 成员,即student1的num(学号)项。可以对 变量的成员赋值,例如 :student1.num=10010;“.” 是 成 员 ( 分 量 ) 运算符,它在所有的运算符中优先级最高, 因此可以把student1.num作为一个整体来 看待。上面赋值语句的作用是将整数 10010赋给student1变量中的成员num。