C++中的结构体(struct)是一种用户自定义的数据类型,用于组合不同类型的数据成员。结构体可以包含各种类型的数据,如整数、浮点数、字符、数组、指针等,可以用来表示一组相关联的数据。
定义结构体
在C++中,结构体使用关键字struct
来定义,其基本语法如下:
struct 结构体名 {
数据成员1类型 数据成员1名称;
数据成员2类型 数据成员2名称;
// 其他数据成员
};
例如:
struct Person {
std::string name;
int age;
float height;
};
创建结构体变量
结构体定义好之后,可以使用该结构体创建结构体变量,如下所示:
Person person1;
访问结构体成员
可以使用成员访问运算符.
来访问结构体变量中的成员:
person1.name = "Alice";
person1.age = 25;
person1.height = 1.75;
结构体初始化
结构体变量可以在声明时进行初始化,也可以在后续使用成员初始化列表进行初始化:
Person person2 = {"Bob", 30, 1.80}; // 声明时初始化
Person person3; // 后续使用成员初始化列表
person3 = {"Charlie", 35, 1.70};
结构体作为函数参数
结构体可以作为函数的参数传递,可以通过传值或传引用的方式进行传递:
void printPerson(const Person &person) {
std::cout << "Name: " << person.name << ", Age: " << person.age << ", Height: " << person.height << std::endl;
}
结构体作为函数返回值
结构体也可以作为函数的返回值:
Person createPerson(const std::string &name, int age, float height) {
Person newPerson;
newPerson.name = name;
newPerson.age = age;
newPerson.height = height;
return newPerson;
}
结构体嵌套
结构体可以嵌套在另一个结构体中,形成复杂的数据结构:
struct Address {
std::string city;
std::string street;
};
struct Employee {
std::string name;
int age;
Address address;
};
注意事项
- 结构体中的成员默认为
public
访问权限,可以在C++11及以后的版本中使用struct
关键字定义public
、protected
或private
访问权限。 - 结构体可以包含方法(函数),但在C++中通常使用类(class)来实现面向对象的设计,结构体更多地用于简单的数据聚合。
- 可以使用
typedef
关键字为结构体定义别名,例如typedef Person Employee;
。
总的来说,结构体是一种方便组织和管理相关数据的方式,在C++编程中经常用于定义简单的数据结构。