一、结构体
结构是一些值的集合,这些值称为成员变量.结构的每个成员可以是不同类型的变量.
结构体声明
结构的成员可以是标量、数组、指针,甚至是其他结构体,比如想描述一个学生的信息,这时我们就可以创建一个结构体类型。
//声明一个学生类型,是想通过学生类型来创建学生变量(对象)
//描述学生:属性:名字+电话+性别+年龄
struct Stu //struct是结构体关键字,Stu(可以是别的英文)是结构体标签
{
//sttuct Stu是结构体类型
//以下的是结构体成员
char name[20];//名字
char tele[12];//电话
char sex[10];//性别
int age;//年龄
}s4,s5,s6;//这里的s4,s5,s6创建的是结构体全局变量//分号不能丢
struct Stu s3;//结构体全局变量
int main()
{
//s1,s2是创建的结构体局部变量
struct Stu s1;
struct Stu s2;
return 0;
}
特殊的声明(匿名结构体)
在声明结构的时候,可以不完全的声明。
比如:
//匿名结构体类型
//在声明结构体的时候可以不完全声明
struct
{
int a;
int b;
int c;
}x;//匿名结构体变量只能在这里创建
struct
{
int a;
int b;
int c;
}a[20],*p;//匿名结构体变量只能在这里创建
上面两个结构体在声明的时候省去了结构体标签,只有一个结构体关键字(struct),这种声明是匿名结构体声明,只能在声明匿名结构体的时候同时创建变量。
结构体定义和初始化
在定义结构体变量的时候给它赋值就是结构体初始化
struct Point
{
int x;
int y;
}p1; //声明类型的同时定义变量p1,p1是个全局变量
struct Point p2; //定义结构体全局变量p2
//初始化:定义变量的同时赋初值。
struct Point p3 = {
1, 2 };
struct Stu //类型声明
{
char name[15];//名字
int age;//年龄
};
struct Stu s = {
"zhangsan", 20 };//初始化
struct Node
{
int data;
struct Point p