#include
//结构是一些值的集合,这些值成为成员变量,结构的每个成员可以是不同类型的变量
//标准结构体
struct Stu//这个Stu是结构体名
{
//这些是成员变量
char name[20];
int age;
char id[20];
}//这些叫变量列表,可以在这里创建结构体变量,这个是全局变量,即声明的同时定义变量
//赋值存在两种情况,按顺序赋值是s2,不按顺序赋值是s3
s1,s2 = { "zhangsan",23,"111" }, s3 = {.name="李四",.id="112",.age=24},s4;
struct Stu s1; //定义结构体变量s1
//匿名结构体
struct //这里却没有名字
{
//这些是成员变量
char id[20];
int age;
char name[20];
}s5;//因为没有名字,所以不能像标准结构体一样随便创建结构体变量
//只能在变量列表的位置,直接创建结构体变量
//结构体的自引用
//注意结构体自引用的时候,不要用匿名结构体,可以避免代码错误
struct Node
{
int data;//数据域
struct Node* next;//指针域
};
//typedef 类型 别名;
/*
类型=struct Npde1
{
int data;
struct Node1* next;
}
别名=Node1
*/
typedef struct Npde1
{
int data;
struct Node1* next;
} Node1;
//结构体嵌套
struct SN
{
char c;
int i;
}sn1 = { 'q',100 }, sn2 = {.i=200,.c='w'};
struct S
{
double d;
struct SN sn;
int arr[10];
};
int main()
{
//在声明的时候已经赋值了,在这可以直接使用
printf("s2.name=%s s3.id=%s\n", s2.name, s3.id);
// 创建标准结构体变量
// struct 结构体名 变量列表名
struct Stu s4;//这个是局部变量
//赋值是这样的
s4.age = 22;
//使用是这样的
printf("s4.age=%d\n",s4.age);
//匿名结构体的使用
s5.age = 21;
printf("s5.age=%d\n",s5.age);
//这里为了方便橙色部分的使用我就不详细的写了
//这是嵌套结构体的赋值,跟数组一样也用{}
struct S s = { 3.14, {'a',99},{1,2,3} };
//嵌套结构体的使用
printf("%lf %c %d\n", s.d, s.sn.c, s.sn.i);
return 0;
}