C++ 结构体

发布于:2025-06-17 ⋅ 阅读:(11) ⋅ 点赞:(0)

1. 结构体的定义和使用

结构体用于将不同类型的数据组合在一起,定义格式如下:

struct Person {
    std::string name;
    int age;
    double height;
};

int main() {
    Person p1;
    p1.name = "Alice";
    p1.age = 20;
    p1.height = 1.65;
    std::cout << p1.name << " " << p1.age << " " << p1.height << std::endl;
    return 0;
}

2. 结构体数组

可以定义结构体类型的数组,批量存储多个结构体对象。

Person people[3] = {
    {"Tom", 18, 1.70},
    {"Jerry", 19, 1.68},
    {"Bob", 21, 1.75}
};
std::cout << people[1].name << std::endl; // 输出Jerry

3. 结构体指针

结构体指针可以指向结构体变量,通过->访问成员。

Person p = {"Lucy", 22, 1.60};
Person* ptr = &p;
std::cout << ptr->name << " " << ptr->age << std::endl;
ptr->age = 23; // 通过指针修改成员

4. 结构体嵌套结构体

结构体成员可以是另一个结构体,实现更复杂的数据结构。

struct Date {
    int year, month, day;
};
struct Student {
    std::string name;
    Date birthday; // 嵌套Date结构体
};

Student s = {"Mike", {2000, 5, 20}};
std::cout << s.name << " " << s.birthday.year << std::endl;

5. 结构体做函数参数

结构体可以作为参数传递给函数,既可以值传递,也可以指针/引用传递。

值传递:

void printPerson(Person p) {
    std::cout << p.name << " " << p.age << std::endl;
}

指针/引用传递(推荐,效率高):

void updateAge(Person* p, int newAge) {
    p->age = newAge;
}
void printPersonRef(const Person& p) {
    std::cout << p.name << " " << p.age << std::endl;
}

6. 结构体中使用const

• const成员变量:C++11起可用,需在构造函数初始化列表赋值,常用于只读属性
• const成员函数:用于保证成员函数不修改结构体内容。
• const结构体参数/引用:防止函数修改结构体内容。
示例:

struct Book {
    std::string title;
    const int id; // 只读成员,需在构造函数初始化
    Book(std::string t, int i) : title(t), id(i) {}
    void print() const { // const成员函数
        std::cout << title << " " << id << std::endl;
    }
};

void showBook(const Book& b) { // const引用参数
    b.print();
}

总结

• 结构体可组合多种类型数据,支持数组、指针、嵌套、函数参数等多种用法。
• 推荐用引用或指针传递结构体参数,提升效率。
• 合理使用const可增强安全性和可读性。


网站公告

今日签到

点亮在社区的每一天
去签到