------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、什么是结构体
数组里面的每一个元素都是相同类型的数据。在实际应用中,我们通常需要由不同类型的数据来构成整体,比如说学生这个整体可以由姓名、年龄、体重等数据构成,这些数据有不同的类型。C语言专门提供了一种构造类型类型来解决这个问题,这就是结构体,它允许内部的元素是不同类型的。
二、定义结构体的方法
定义一个结构体的一般形式为:
struct 结构名
{
成员列表
};
struct 是一个关键字,表示这是一个结构体
//定义一个学生的结构体
struct stu {
char *name;//姓名
int age; //年龄
float score;//分数
}
结构体变量的定义的三种方法
1、先定义结构体。在定义结构体变量
struct Student {
char *name;//姓名
int age; //年龄
float score;//分数
};
//注意:
1)结构体定义完成后,计算机并不会给结构体分配内存空间
2)会在定义结构体变量后,分配存储空间
//结构体变量的定义格式
struct 结构体名 结构体变量名;
struct Student stu;
2、定义结构体的同时,定义结构体变量格式:
struct 结构体名{
}结构体变量1,架构体变量2.......;
struct Student {
char *name;//姓名
int age; //年龄
float score;//分数
}stu1,stu2;
3、使用匿名结构体定义结构体变量struct {
struct {
char *name;//姓名
int age; //年龄
float score;//分数
}stu1,stu2;
三、结构体变量的初始化1、先定义结构体变量,在进行初始化
struct Student {
char name[21];//姓名
int age; //年龄
float score;//分数
};
struct Student stu;stu.age=23;
stu.score=87.50f;
char name="小明"
strcpy(stu.name,"小明");
2、定义的同时初始化
struct Student {
char name[21];//姓名
int age; //年龄
float score;//分数
};
struct Student stu = {"小明",32,87.50f};
四、结构体数组
定义格式:
struct 结构名 {
成员列表
}数组名[数组长度];
定义了一个长度为5的数组,其中每一个元素都是结构类型
跟结构体变量一样,结构体数组也有3种定义方式
struct Student {
char *name;
int age;
};
struct Student stu[5]; //定义1
struct Student {
char *name;
int age;
} stu[5]; //定义2
struct {
char *name;
int age;
} stu[5]; //定义3
五、指向结构体的指针
定义形式:struct 结构体 *指针变量名
3种访问结构体成员的方式
结构体变量名 . 成员名
(*指针变量名) . 成员名
指针变量名 -> 成员名
枚举类型
枚举类型定义的一般形式:
enum 枚举类型名{枚举值表};
在枚举值表中罗列出所有可能的值,称为枚举元素。
1)先定义枚举类型,在定义枚举变量
enum color {white , black , gold};
enum color iPhone;
2)定义枚举类型的同时,定义变量
enum color {white , black , gold} iPhone;
枚举变量的初始化
enum color {white , black , gold} iPhone;
iPhone = white; // 等价于 iPhone = 0;
iPhone = 2; // 等价于 iPhone = gold;
typedef 的概念及语法格式
typedef 定义的一般形式:
typedef 原类型名 新类型名;
可以由宏定义来替代typedef 的功能,但是宏定义是由预处理完成的,而typedef 是在编译时完成,后者更为灵活。