c++结构体的知识
时间: 2025-07-29 12:22:15 浏览: 6
在 C++ 中,结构体(`struct`)是一种用户自定义的数据类型,允许将不同类型的数据组合在一起。与类(`class`)类似,结构体也可以包含成员变量和成员函数。以下是关于 C++ 结构体的定义和用法的详细说明:
### 定义结构体
使用 `struct` 关键字来定义一个结构体。基本语法如下:
```cpp
struct 结构体名称 {
// 成员变量或成员函数
};
```
例如,定义一个表示商品的结构体:
```cpp
struct Product {
std::string name;
int quantity;
double price;
void display() {
std::cout << "Name: " << name << ", Quantity: " << quantity << ", Price: $" << price << std::endl;
}
};
```
该结构体包含三个成员变量:`name`、`quantity` 和 `price`,以及一个成员函数 `display()` 用于打印这些信息。
### 声明结构体变量
在定义结构体后,可以声明其变量并访问其成员。成员通过点号运算符(`.`)进行访问。
```cpp
Product p1;
p1.name = "Laptop";
p1.quantity = 5;
p1.price = 999.99;
p1.display(); // 输出: Name: Laptop, Quantity: 5, Price: $999.99
```
### 结构体的初始化
可以在声明结构体变量时对其进行初始化。C++ 支持多种初始化方式,包括直接赋值和列表初始化。
```cpp
Product p2 = {"Phone", 10, 699.99};
p2.display(); // 输出: Name: Phone, Quantity: 10, Price: $699.99
```
### 结构体嵌套
结构体可以嵌套其他结构体,从而创建更复杂的数据结构。例如:
```cpp
struct Address {
std::string street;
std::string city;
std::string state;
};
struct Employee {
std::string name;
int id;
Address address; // 嵌套结构体
};
Employee emp;
emp.name = "John Doe";
emp.id = 12345;
emp.address.street = "123 Main St";
emp.address.city = "New York";
emp.address.state = "NY";
```
### 使用 `typedef` 简化声明
通过 `typedef` 可以简化结构体类型的声明:
```cpp
typedef struct {
int x;
int y;
} Point;
Point p;
p.x = 10;
p.y = 20;
```
### 结构体作为函数参数
结构体可以作为函数的参数传递,通常推荐使用引用以避免不必要的拷贝。
```cpp
void printProduct(const Product& product) {
std::cout << "Name: " << product.name << ", Price: $" << product.price << std::endl;
}
printProduct(p1); // 输出: Name: Laptop, Price: $999.99
```
### 结构体指针
可以通过指针访问结构体的成员,使用箭头操作符(`->`)。
```cpp
Product* pPtr = &p1;
pPtr->price = 899.99; // 修改价格
pPtr->display(); // 输出: Name: Laptop, Quantity: 5, Price: $899.99
```
### 示例代码总结
以下是一个完整的示例代码,展示了结构体的定义、初始化和基本用法:
```cpp
#include <iostream>
#include <string>
struct Product {
std::string name;
int quantity;
double price;
void display() {
std::cout << "Name: " << name << ", Quantity: " << quantity << ", Price: $" << price << std::endl;
}
};
int main() {
Product p1;
p1.name = "Laptop";
p1.quantity = 5;
p1.price = 999.99;
p1.display();
Product p2 = {"Phone", 10, 699.99};
p2.display();
return 0;
}
```
###
阅读全文
相关推荐



















