结构体、联合体、枚举
一、构造数据类型
1、数组 :
批量处理相同数据类型的一个数据结构
2、联合
可以说是已经淘汰了,基本不用这种技术了
3、结构体:
处理不同数据类型的一个数据结构,结构体也是一段连续的内存空间(但是)由于成员变量的排列顺序不同,可能造成有缝隙。(内存的对齐和补齐)。
体检表:
姓名:黄永瑞 性别:男 出生日期:1990-1-1 照片:
家庭地址:深圳市龙岗区美梦家园
内科 血压/脉搏
120/85 98
外科 身高 体重 视力/色弱
耳鼻喉
胸透X
B超
心电图
3.1、结构体类型的变量一般格式
struct 结构体名称
{
};
例子:struct Student
{
int no;//学号
char name[20];//姓名 =====>成员变量
char sex[10];//性别
double score;//成绩
};
第一种
struct Student
{
int no;//学号
char name[20];//姓名 =====>成员变量
char sex[10];//性别
double score;//成绩
}变量名,变量名1;
第二种
struct Student 变量名;
--------------------
整体看做一个数据类型
注意:结构体是一个数据类型,复合的数据类型,就是由很多个基本数据类型组成的一个大得数据类型。这样的数据类型并不分配内存空间,只有在创建一个结构体类型的变量时才分配内存空间,来存储结构体中得成员变量。
3.2、结构体的嵌套
struct Student
{
int no;
char name[20];
int age;//年龄
struct Birthday
{
int y;
int m;
int d;
};
};
或
struct Birthday
{
int y;
int m;
int d;
};
struct Student
{
int no;
char name[20];
int age;//年龄
struct Birthday birth;//生日
};
3.2、结构体类型变量的初始化。
第一种
struct Student
{
int no;
char name[20];
}stu = {2013001,"锐哥"};
第二种
struct Student liang = {0};//不推荐
struct Student liang = {2014001,"亮哥"};
动态从键盘上去给成会员变量赋值
点语法 " . "
结构体变量名.成员变量名;
如果是scanf()输入 遇到基本数据类型中得数值数据以及字符类型的数据都要加 & 符号,否则错误,如果是字符串类型用scanf(),%s还要去掉 &符号,字符串结构本身就是地址。
指针运算符 ->
访问结构体变量的成员变量的方法。
3.3、结构体类型的指针
struct Student* p;
3.4、结构体类型的数组
每一个数组元素,其实是一个结构体类型的变量,每一个变量又是由多个不同数据类型的变量组成。
例子:我们可以借助结构体数组,保存1406班每一个学生的信息,学号 姓名 性别 年龄等。
一般格式: 结构体类型 数组名[];
struct Student stu[50];