结构体类型
结构是一些值的集合,这些值被称为成员变量,结构的每个成员可以是不同的类型。
结构体类型的声明
struct tag
{
member-list;
}variable-list;
例如描述一个学生
struct stu
{
char name[20];
int age;
char sex[10];
}s1, s2;
上述结构体中
struct stu
{
char name[20];
int age;
char sex[10];
}
只是个结构体类型,就如int、char、float等是个数据类型一样,
而s1、s2是结构体变量,就如int a; a是变量。
结构体的不同声明方式
声明结构体类型的时候同时创建变量
struct Stu
{
char name[20];
int age;
char sex[10];
}s1, s2;
先声明结构体类型,后创建变量
struct Stu
{
char name[20];
int age;
char sex[10];
};
struct Stu s1;
不完全声明结构体(匿名结构体类型的声明)
struct
{
char name[20];
int age;
char sex[10];
}s1;
上述结构体的变量一旦创建成功,就没法再次创建此结构体类型的其他变量。
typedef 在结构体类型声明中的使用
typedef struct Stu
{
char name[20];
int age;
char sex[10];
} st;
注意:st不是结构体变量,它是结构体struct Stu类型的重命名,是结构体类型。
struct Stu s1 和st s1的效果是一样的,只是st写法稍微简单一些。
结构体变量的定义和初始化
struct point
{
int x;
int y;
}p1; //声明类型的同时定义变量p1
struct point p2; //定义结构体变量p2
struct point p3 = {2, 3}; //定义变量的同时赋值
struct Stu
{
char name[20];
int age;
};
struct Stu s1 = {"zhangsan", 20}; //定义变量的同时初始化变量
struct core
{
int math;
int English;
};
struct Stu
{
char name[20];
int age;
struct core n; //结构体中包含结构体
};
struct Stu s1 = {"zhangsan", 20, {80, 90}};
struct point
{
int x;
int y;
}p1 = {2, 3}; //声明类型的同时定义变量p1,同时进行初始化