目录
结构体的声明
结构体的自引用
结构体的定义以及初始化
结构体的声明
结构体的概念:
结构体是一些值的集合,这些值称为成员变量,结构的每个成员可以是不同类型的变量
结构体的声明:
结构体声明的关键字:struct
例如要表示一个学生类型(姓名、年龄、ID……):
struct Stu
{
char name[20];
int age;
char ID[20];
// …………
};
结构体类型创建结构体变量:
方法一:
struct Stu
{
char name[20];
int age;
char ID[20];
// …………
}s1, s2, s3;
直接在尾部创建变量,然后在主函数中直接使用
方法二:
struct Stu
{
char name[20];
int age;
char ID[20];
// …………
};
int main()
{
struct Stu s1, s2, s3;
return 0;
}
也可在主函数中通过 struct Stu 创建变量
注意:要和 typedef 重命名关键字区分
typedef struct Stu
{
char name[20];
int age;
char ID[20];
// …………
}Stu;
int main()
{
Stu s1, s2, s3;
return 0;
}
这里末尾的 Stu 是将 struct Stu 重命名成 Stu ,再之后创建变量时,只需要使用 Stu 即可创建
结构体的自引用
在结构体成员中包含了结构体自身的指针,这就是结构体的自引用
如:单链表的结构体
struct Node
{
int data;
struct Node* next;
};
单链表的结构:结构体中存放当前数据和下一个数据的地址,这样的一个结构称之为一个节点,把需要存放数据通过这种方式串连在一起,后续会详细讲解
结构体的定义以及初始化
定义:
struct Stu
{
char name[20];
int age;
char ID[20];
// …………
}s1, s2; // 全局变量
int main()
{
struct Stu s3, s4; // 局部变量
return 0;
}
s1 和 s2 是创建结构体时顺带创建了变量
s3 和 s4 是在主函数中创建的变量
初始化:
顺序初始化:
struct Stu
{
char name[20];
int age;
char ID[20];
// …………
}s1 = { "WangWu", 20, "3234527" }; // 全局变量
指定初始化:
struct Stu
{
char name[20];
int age;
char ID[20];
// …………
}s1 = { .age = 20,.ID = "3234527",.name = "WangWu" }; // 全局变量
利用 .操作符 指定初始化
打印验证可行性:
顺序初始化打印:
指定初始化打印: