结构体
Q
什么是结构体?
+
结构体 就是把多个不同类型的数据打包成一个整体。
比如学生结构体可以包含姓名、学号、成绩这些信息。用起来比单个变量更方便。
Q
如何创建一个结构体类型?
重点
+
用 struct 关键字定义一个结构体类型
cpp
struct 结构体名称 {
成员类型 成名名称;
成员类型 成名名称;
...
};1
2
3
4
5
2
3
4
5
cpp
struct Student {
string name;
int age;
float score;
};1
2
3
4
5
2
3
4
5
Q
如何创建一个结构体变量?
+
直接像普通变量那样声明即可:
cpp
int a; // 声明int类型的变量
Student stu1; // 声明学生类型的变量
Student stu2 = {"李四", 21, 89.5}; // 声明并初始化1
2
3
2
3
cpp
// 定义结构体时同时声明变量
struct Student {
string name;
int age;
float score;
} stu1,stu2;1
2
3
4
5
6
2
3
4
5
6
Q
什么是匿名结构体?
+
匿名结构体就是没有名字的结构体,定义时直接声明变量:
cpp
struct { // 没有类型名
int x;
string s;
} myVar; // 直接跟变量名1
2
3
4
2
3
4
- 不能重复使用这个类型
- 适合临时用一次的小数据组合
Q
如何访问结构体变量的成员?
重点
+
用点号 . 访问成员
如果是结构体指针就用 ->,比如 p->name
cpp
Student stu;
stu.name = "张三";
stu.age = 20;
cout << stu.name << endl;1
2
3
4
5
2
3
4
5
cpp
Student *stu;
stu->name = "张三";
stu->age = 20;
cout << stu->name << endl;1
2
3
4
5
2
3
4
5
Q
结构体可以嵌套吗?
+
结构体可以嵌套,比如:
cpp
struct Address {
string city;
string street;
};
struct Student {
string name;
Address addr; // 嵌套Address结构体
int age;
};1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
用的时候逐层访问:stu.addr.city