自定义数据类型
自定义数据类型有:结构体、共用体(联合体)、枚举
结构体类型
定义: 不是基本类型也不是指针,它是若干相同或不同类型数据的集合。结构体用于将不同类型的数据组合到一起,以便引用。
**定义方法1:**我们在使用结构体之前必须先有类型,然后用类型定义数据结构,这个类型相当于一个模具。
①声明结构体类型:
struct 结构体类型名
{
成员列表
};
②定义结构体变量
struct 结构体类型名 结构体变量1, 结构体变量2;
例子:
struct stu
{
int num;
char name[20];
int age;
char add[30];
};
struct stu mike, join;
注:定义结构体类型时不分配空间,定义结构体变量后才分配空间
定义方法2: 在定义结构体类型时,顺便定义结构体变量,后面还可以定义结构体变量
①定义结构体类型+结构体变量
struct 结构体类型名
{
成员列表
}结构体变量1, 结构体变量2 ;
②再次定义结构体变量
struct 结构体类型名 结构体变量3, 结构体变量4;
上面共定义了4个结构体类型变量,每个变量都有4个成员。
例子:
struct stu
{
int num;
char name[20];
int age;
char add[30];
}mike, join;
struct stu zhangsan, lisi;
注:一般结构体类型都会定义在全局,也就是main函数外面。所以定义结构体类型的同时定义变量,这些变量一般都是全局变量。定义完类型之后定义的结构体变量内存分配需要看变量定义的位置
定义方法3: 在定义结构体类型的时候,没有定义结构体类型名,顺便定义结构体变量。因为没有结构体类型名,所以以后不能再定义相关类型的结构体变量了。这种也称为无名结构体或匿名结构体。
①定义结构体类型+结构体变量
struct
{
成员列表
}结构体变量1, 结构体变量2 ;
例子:
struct
{
int num;
char name[20];
int age;
char add[30];
}mike, join;
注:无名结构体因为没有结构体类型名,只能定义类型的同时定义结构体变量
定义方法4: 给数据类型取别名typedef
通常我们将结构体重新起个类型名,用新的类型名代替原先的类型
①使用typedef取别名
typedef struct 结构体类型名
{
成员列表
}重新定义的结构体类型名;