在 C++ 中,struct
(结构体)是一种用户自定义的数据类型,可以用来组合不同类型的数据。结构体的使用非常广泛,尤其在需要将多个相关的数据组合在一起时。
定义结构体
使用 struct
关键字定义一个结构体的基本语法如下:
struct StructName {
// 数据成员
DataType member1;
DataType member2;
// ...
};
示例
下面是一个简单的示例,展示了如何定义和使用结构体:
#include <iostream>
#include <string>
struct Person {
std::string name;
int age;
float height;
};
int main() {
// 创建结构体变量
Person person1;
// 给结构体成员赋值
person1.name = "Alice";
person1.age = 30;
person1.height = 5.5;
// 输出结构体成员
std::cout << "Name: " << person1.name << std::endl;
std::cout << "Age: " << person1.age << std::endl;
std::cout << "Height: " << person1.height << " feet" << std::endl;
return 0;
}
结构体的初始化
可以在定义结构体变量时直接进行初始化:
Person person2 = {"Bob", 25, 6.0};
结构体数组
可以创建结构体的数组来存储多个相同类型的结构体:
Person people[3] = {
{"Alice", 30, 5.5},
{"Bob", 25, 6.0},
{"Charlie", 28, 5.8}
};
结构体作为函数参数
结构体可以作为函数参数传递:
void printPerson(const Person& p) {
std::cout << "Name: " << p.name << ", Age: " << p.age << ", Height: " << p.height << " feet" << std::endl;
}
int main() {
Person person = {"Alice", 30, 5.5};
printPerson(person);
return 0;
}
结构体与类的区别
- 默认访问权限:在
struct
中,成员的默认访问权限是public
,而在class
中,默认访问权限是private
。 - 用途:
struct
通常用于简单的数据结构,而class
用于封装更复杂的对象及其行为。
示例:包含函数的结构体
C++ 的结构体不仅仅可以包含数据成员,也可以包含成员函数:
struct Rectangle {
float width;
float height;
float area() {
return width * height;
}
};
int main() {
Rectangle rect = {10.0, 5.0};
std::cout << "Area: " << rect.area() << std::endl;
return 0;
}
总结
struct
是 C++ 中一个非常有用的特性,适用于组织和管理相关数据。它可以与类同样使用,并且可以包含数据和函数。通过使用结构体,可以有效地解决和管理复杂的数据结构。