用户自定义数据类型

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

9.1 结构体
结构体是一种构造数据类型
用途:把不同类型的数据组合成一个整体-------
自定义数据类型
结构体类型定义
struct [结构体名]
合法标识符 可省:无名结构体
struct是关键字, 不能省略
{ 类型标识符 成员名; 类型标识符 成员名;
……………. };
成员类型可以是 基本型或构造型
char sex;
int age;
定义结构体变 score
float score;
量之后为其分
char addr[30]; 配内存单元
addr
};
Baidu Nhomakorabea
struct student
stu1,stu2;
…..

2字节 20字节 1字节 2字节
4字节
30字节
2、定义结构体类型的同时定义结构体变量
一般形式:
struct 结构体名
类型:不分配内存;
变量:分配内存
结构体类型是一个模型,类似系统给定的基本类型比如int、 float 等类型,只是结构体类型是用户自定义的而已。
结构体可嵌套
结构体成员名与程序中变量名可相同,不会混淆
例 struct date
{ int month;
int day;
int year; };
birthday num name
一般形式:
{ 类型标识符 成员名;
类型标识符 成员名;
例 struct
……………. }变量名表列;
{ int num; char name[20];
用无名结构体直接定义 变量只能一次
char sex;
int age;
float score;
char addr[30];
}stu1,stu2;
说明
结构体类型与结构体变量概念不同
构造类型

型 指针类型
数组 结构体struct 共用体union 枚举类型enum
空类型void
定义类型typedef
短整型short 整型int 长整型long 单精度型float 双精度型double
在基本 类型基 础上自 己定义

考虑一个学生的基本信息包括:
学号、姓名、性别、年龄、成绩、住址等。
分号不能省略
例如:要想把学生基本情况作为一个整体加以处理, 比如:学号、姓名、性别、年龄、成绩、住址等。
必须定义结构体类型
例 struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; };
类型标识符 成员名;
例 struct student { int num;
……………. }; struct 结构体名 结构体变量={初始数据};
char name[20];
这对一名学生来说是一个整体,可以反映出学生的基本情 况,如果用单个变量分别表示这几项,例如:
sum:学号 name[10] :姓名 sex:性别 age: 年龄 score: 成绩 addr[30]:住址 不能体现出它们之间的内在联系。
所以,希望有一种变量,来表示所有这些数据,也就是, 把这些基本变量,作为一个整体构成一个新的变量,这 种变量就是我们要介绍的结构体变量。
可以将一个结构体变量赋值给另一个结构体变量 结构体嵌套时逐级引用
例 例sstrtruucctt ssttuuddeenntt
{{ int inntumnu;m;
chacrhnaarmnea[2m0e][;20s]t;u1.birthday.month=12;
strucchtardsaetxe;
{ iinnttmagoen;th;
第九章 用户自定义数据类型
第九章 用户自定义数据类型 一、结构体的概念及使用 二、结构体数组 三、结构体指针 四、链表的概念及基本操作 五、共用体的概念及使用
六、9.6 枚举类型 七、 9.7 用typedef定义类型
C语言的数据类型
整型
基本类型
数值类 型
浮点型
字符类型char
C
数 据
结构体类型定义描述结构 的组织形式,不分配内存
结构体变量的定义
1、先定义结构体类型,再定义结构体变量
一般形式:struct
{
结构体名
类型标识符 成员名;
stu1 num

类型标识符 成员名; name
str{uincctht asrtnunudamemn;et[20}s;t;]r;uct…结…构…体…名….变量名表列saegxe
成员(分量)运算符 优先级: 1 stu1.num=10; 结合性:从左向右
char sex; char name[20]; int age; char sex; printf(“%dst,u%1s.s,%corce,%=8d5,.%5;f,%s\n”,stu1);
(
float scorein; t age;
{ 类型标识符 成员名;
例 struct student { int num; char name[20];
类型标识符 成员名;
……………. }变量名表列;
char sex;
int age;
float score;
char addr[30];
}stu1,stu2;
3、直接定义结构体变量 struct
month day year
struct student
{ int num;
char name[20];
struct date birthday;
}stu;
结构体变量的引用
引用规则
结构体变量不能整体引用,只能引用变量成员
引用方式: 结构体变量名.成员名
例 {struc例itntsntusutdmreu;nctt student char{ naminet[2n0u];m;
char addrf[l3o0a]t;scsotrue1;={101,“Wstaun1L.scino”r,e‘+M=’s,t1u92,8.s7c.o5r,“e;DaLian”}; ()
}stu1,stu2; char addr[30]; stu1.age++;
}stu1,stu2;
结构体变量的引用
ifnlotadtasyc;ore; icnhtayreaadr;dr[30];
nusmtu2=sntaum1;e ( ) birthday month day year
}s}tbui1r,tshtud2a;y;
}stu1,stu2;
结构体变量的初始化
形式一:
struct 结构体名
{ 类型标识符 成员名;
相关文档
最新文档