明德-结构体&结构体数组
2026-05-21 16:24:47
发布于:广东
📘 C++ 结构体和结构体数组笔记
一、为什么需要结构体?
假设你想记录一个学生的信息:姓名、学号、成绩。
如果写三个单独的变量:
string name = "李明";
int id = 1001;
float score = 92.5;
这样很零散。如果要记录全班 40 个同学,你需要 120 个变量,非常混乱。
结构体可以把属于同一个学生的所有信息打包在一起,成为一个新的类型,这样管理起来就方便多了。
二、定义结构体
struct Student {
string name; // 姓名
int id; // 学号
float score; // 成绩
};
struct是关键字Student是结构体名字(首字母大写)- 大括号内是成员变量
- 末尾一定要有分号
;
三、使用结构体变量
3.1 声明并逐个赋值
Student stu1;
stu1.name = "张小美";
stu1.id = 1002;
stu1.score = 88.5;
用 点(.) 来访问成员。
3.2 声明时直接初始化
Student stu2 = {"王明明", 1003, 92.0};
3.3 完整示例(输入输出一个学生,无提示)
#include <iostream>
#include <string>
using namespace std;
struct Student {
string name;
int id;
float score;
}stu2;//第二种定义方式
int main() {
Student stu1;//第一种定义方式
// 输入
cin >> stu.name >> stu.id >> stu.score;
// 输出
cout << stu.name << " " << stu.id << " " << stu.score << endl;
return 0;
}
运行示例:
输入:李小乐 1005 94.5
输出:李小乐 1005 94.5
四、结构体数组(全班同学)
4.1 声明结构体数组
Student class1[31]; // 准备存放最多30个学生,从class1[1]到class1[30]
4.2 初始化结构体数组
Student class1[3] = {}; // 开4个位置,只用下标1~3
class1[0] = {"陈小东", 101, 90.5};
class1[1] = {"周小琪", 102, 88.0};
class1[2] = {"吴小凡", 103, 76.5};
或者直接在声明时初始化:
Student class1[3] = {{"陈小东",101,90.5}, {"周小琪",102,88.0}, {"吴小凡",103,76.5}};
4.3 访问数组元素
cout << class1[1].name; // 输出 "陈小东"
class1[2].score = 91.0; // 修改第二个学生的成绩
4.4 完整示例(输入输出多个学生,并计算平均分)
#include <iostream>
#include <string>
using namespace std;
struct Student {
string name;
int id;
float score;
};
int main() {
int n;
cin >> n; // 输入学生人数
Student stu[101]; // 最多100人,下标从1到100
// 输入 n 个学生的信息
for (int i = 1; i <= n; i++) {
cin >> stu[i].name >> stu[i].id >> stu[i].score;
}
// 输出所有学生信息
float total = 0;
for (int i = 1; i <= n; i++) {
cout << stu[i].name << " " << stu[i].id << " " << stu[i].score << endl;
total += stu[i].score;
}
// 输出平均分
cout << total / n << endl;
return 0;
}
运行示例:
输入:
3
李明 1001 89.5
小红 1002 94
小刚 1003 76.5
输出:
李明 1001 89.5
小红 1002 94
小刚 1003 76.5
86.6667
五、小贴士(快速记忆)
| 操作 | 写法 |
|---|---|
| 定义结构体 | struct 名字 { 成员1; 成员2; }; |
| 创建变量 | Student stu,stu1[1010];或者直接在创建结构体的时候创建 |
| 访问成员 | stu.name = "张三"; |
| 输入成员 | cin >> stu.name; |
| 输出成员 | cout << stu.name; |
六、自己动手试一试
写一个程序,定义一个 Book 结构体,包含书名、作者、价格。先输入一个整数 n 表示书的数量,然后输入 n 本书的信息(每行书名、作者、价格),最后输出所有书的信息(每行一本)。要求循环下标从1开始。
参考代码:
struct Book {
string title;
string author;
float price;
};
int main() {
int n;
cin >> n;
Book books[101]; // 多开一个位置
for (int i = 1; i <= n; i++) {
cin >> books[i].title >> books[i].author >> books[i].price;
}
for (int i = 1; i <= n; i++) {
cout << books[i].title << " " << books[i].author << " " << books[i].price << endl;
}
return 0;
}
结构体让管理“一组相关的数据”变得简单又清晰。快去试试吧!📚✨
全部评论 1
结构体
6小时前 来自 广东
0
















有帮助,赞一个