结构体(struct)是C++中一种用户自定义的数据类型,允许将不同类型的数据组合成一个单一的类型。结构体主要用于表示具有多个属性的实体,例如学生信息(姓名、年龄、成绩等)。结构体的成员可以是基本数据类型、数组、指针,甚至是其他结构体。
结构体的定义使用关键字 struct
,语法如下:
struct 结构体名称 {
数据类型 成员1;
数据类型 成员2;
// ...更多成员
};
例如,定义一个表示学生的结构体:
struct Student {
string name;
int age;
float score;
};
定义结构体后,可以声明该类型的变量:
Student s1; // 声明一个Student类型的变量s1
结构体的成员可以通过点运算符(.
)访问和赋值:
s1.name = "Alice";
s1.age = 20;
s1.score = 85.5;
也可以在声明时初始化:
Student s2 = {"Bob", 21, 90.0};
结构体可以用于定义数组,例如存储多个学生的信息:
Student class[3] = {
{"Alice", 20, 85.5},
{"Bob", 21, 90.0},
{"Charlie", 22, 78.0}
};
结构体指针可以通过箭头运算符(->
)访问成员:
Student *ptr = &s1;
cout << ptr->name; // 输出Alice
结构体可以作为函数参数或返回值:
void printStudent(Student s) {
cout << "Name: " << s.name << ", Age: " << s.age << ", Score: " << s.score << endl;
}
Student createStudent(string name, int age, float score) {
Student s;
s.name = name;
s.age = age;
s.score = score;
return s;
}
结构体可以嵌套其他结构体,例如定义一个包含生日的学生结构体:
struct Date {
int day;
int month;
int year;
};
struct StudentWithBirthday {
string name;
Date birthday;
float score;
};
初始化嵌套结构体:
StudentWithBirthday s3 = {"Alice", {15, 5, 2000}, 85.5};
结构体常用于封装数据并传递给函数,例如计算学生的平均成绩:
float averageScore(Student students[], int size) {
float sum = 0;
for (int i = 0; i < size; i++) {
sum += students[i].score;
}
return sum / size;
}
调用示例:
Student class[3] = {
{"Alice", 20, 85.5},
{"Bob", 21, 90.0},
{"Charlie", 22, 78.0}
};
cout << "Average score: " << averageScore(class, 3);
结构体是C++中组织和管理复杂数据的有效工具,广泛应用于实际编程中。