【C语言】构造数据类型(自定义数据类型)相关知识点

目录

构造数据类型

一、结构体

1、定义和使用结构体变量

2、使用typedef关键字自定义类型名

3、用一个结构体类型的变量作为另一个结构体类型的成员

4、结构体数组

二、共用体

1、什么是共用体?

2、共用体类型的声明和共用体变量的定义

3、共用体类型所占内存

三、枚举类型

1、枚举类型的概念

2、枚举类型的声明

3、枚举变量的定义

4、枚举类型的使用


构造数据类型


构造数据类型:自己建立的数据类型(自定义数据类型)。
C语言中的构造数据类型有:数组类型、结构体类型、共用体类型和枚举类型


一、结构体


1、定义和使用结构体变量


1)什么是结构体?
C语言允许用户根据需要自己建立的由不同类型数据组成的组合型的数据类型,我们把它称之为结构体(struct)。
2)为什么要用结构体?
在日常生活中有许多事物用单一的数据类型可能没办法完全表示出来,例如:学校要存储学生的学号、姓名、性别、年龄、成绩和家庭地址等信息,这些信息需要用不同的数据类型来存储,显然用我们一个普通的单一的数据类型是无法全部存储起来的,就比如说数组,我们常用它来存储一串连续的信息,但是它的数据类型单一,显然无法把学生的这些信息全部保存。
所以,结构体这种数据类型就诞生了,它能根据用户需要来更方便的存储各种各样的信息。
3)结构体类型的声明和结构体变量的定义
①声明一个结构体类型的一般形式为:
struct 结构体类型名{成员列表};
②定义一个结构体类型的变量:
可以在声明的时候直接定义结构体变量,也可以先声明后定义结构体变量。
例如:学生类结构体

struct student{
int id; //学生学号
char name[10]; //学生姓名
char sex[4]; //学生性别
int age; //学生年龄
int score; //学生成绩
char address[20]; //学生家庭住址
}S1,S2,S3; //声明时定义结构体变量S1,S2,S3

//这里定义了一个结构体,其中struct为结构体关键字,srtuct student为结构体类型名,id、
name、sex、age、score、address为结构体成员名,S1、S2、S3为结构体变量名。
注意:一定要区分清楚什么是结构体类型名、结构体成员名和结构体变量名。除了声明时可以定义结构体变量,声明后也可以用数据类型名定义结构体变量。如:

int main()
{
struct student S4,S5;//声明之后使用结构体类型名定义的结构体变量S4,S5
return 0;
}

③不指定结构体类型名而直接定义结构体类型的变量
其一般形式为:
struct //这里缺省了结构体类型名
{
成员列表;
}变量名列表;如:

srtuct //这里没有规定结构体类型名
{
int id;
char name[10];
char sex[4];
int age;
int score;
char address[20];
}t1,t2,t3; //由于没有规定类型名,所以变量只能声明时定义


注意:以此方式定义结构体,由于没有结构体类型名,只能在声明时定义此结构体的变量,而不能再以此结构体类型名去定义其他变量了。(这种方式用得不多)
4)结构体变量的初始化和引用
①结构体变量的初始化:

srtuct teacher{
int id;
char name[10];
char sex[4];
int age;
int score;
char address[20];
}t1={666,"小明","男",18,100,"中国"},t2,t3;

//这里给srtuct teacher类型的结构体变量t1赋初值(初始化)
//在定义结构体变量的同时给变量赋初值,应按次序给每一个成员或部分成员赋值
②结构体变量和成员的引用
相同结构体类型的结构体能够相互赋值:如有struct student s1,s2; 就可以有s1=s2;
不同结构体类型的结构体不能相互赋值:如有struct student s; struct teacher t; 不能有s=t;也不能有student = teacher;
结构体成员引用符:'.',结构体成员引用的一般格式:结构体变量名.成员名
如:s1.id=1;、s

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sherry的成长之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值