C++结构体
时间: 2025-07-06 07:07:58 浏览: 12
### C++ 结构体的定义
C++中的结构体(`struct`)是一种用户自定义的数据类型,允许将不同类型的数据组合在一起。与类(`class`)类似,结构体也可以包含成员变量和成员函数。不同之处在于,默认情况下,结构体的成员访问权限是公共的(`public`),而类的成员访问权限是私有的(`private`)。基本的结构体定义如下:
```cpp
struct Student {
std::string name;
int age;
void display() {
std::cout << "Name: " << name << ", Age: " << age << std::endl;
}
};
```
在上述示例中,`Student`是一个结构体,包含两个成员变量`name`和`age`,以及一个成员函数`display()`用于打印学生信息[^1]。
### 创建和使用结构体变量
在C++中,创建结构体变量时可以省略关键字`struct`,这与C语言有所不同。例如,对于上面定义的`Student`结构体,可以按照以下方式创建变量:
```cpp
Student student1;
student1.name = "Alice";
student1.age = 20;
student1.display(); // 输出 Name: Alice, Age: 20
```
这里,`student1`是`Student`结构体的一个实例。通过点操作符`.`,可以访问结构体中的成员变量和成员函数[^1]。
### 结构体变量的初始化
在定义结构体变量时,可以对其进行初始化。一种常见的方法是在定义变量的同时提供初始值:
```cpp
Student student2 = {"Bob", 22};
student2.display(); // 输出 Name: Bob, Age: 22
```
此外,还可以在结构体内部定义一个初始化函数,用于设置默认值:
```cpp
struct Student {
std::string name;
int age;
void init(const std::string& n, int a) {
name = n;
age = a;
}
void display() {
std::cout << "Name: " << name << ", Age: " << age << std::endl;
}
};
Student student3;
student3.init("Charlie", 25);
student3.display(); // 输出 Name: Charlie, Age: 25
```
### 使用typedef简化结构体类型名称
为了简化结构体类型的声明,可以使用`typedef`关键字为结构体类型定义一个新的名称:
```cpp
typedef struct {
std::string name;
int age;
void display() {
std::cout << "Name: " << name << ", Age: " << age << std::endl;
}
} Student;
Student student4;
student4.name = "David";
student4.age = 30;
student4.display(); // 输出 Name: David, Age: 30
```
在这个例子中,`Student`成为了匿名结构体的新名称,使得后续的变量声明更加简洁[^2]。
### 结构体在复杂数据结构中的应用
结构体不仅限于简单的数据组合,它们还常用于实现复杂的数据结构,如链表、树等。例如,一个简单的单链表节点可以用结构体来表示:
```cpp
struct Node {
int data;
Node* next;
Node(int d) : data(d), next(nullptr) {}
};
Node* head = new Node(10);
head->next = new Node(20);
```
在这个例子中,`Node`结构体包含一个整型数据`data`和一个指向下一个节点的指针`next`。构造函数`Node(int d)`用于初始化节点的数据,并将`next`指针初始化为`nullptr`[^2]。
###
阅读全文
相关推荐















