基于算法竞赛的c++编程(27)结构体的概念和简单应用

结构体的概念

结构体(struct)是C++中一种用户自定义的数据类型,允许将不同类型的数据组合成一个单一的类型。结构体主要用于表示具有多个属性的实体,例如学生信息(姓名、年龄、成绩等)。结构体的成员可以是基本数据类型、数组、指针,甚至是其他结构体。

结构体的定义

结构体的定义使用关键字 struct,语法如下:

struct 结构体名称 {
    数据类型 成员1;
    数据类型 成员2;
    // ...更多成员
};

例如,定义一个表示学生的结构体:

struct Student {
    string name;
    int age;
    float score;
};

结构体的简单应用

声明结构体变量

定义结构体后,可以声明该类型的变量:

Student s1; // 声明一个Student类型的变量s1

初始化结构体成员

结构体的成员可以通过点运算符(.)访问和赋值:

s1.name = "Alice";
s1.age = 20;
s1.score = 85.5;

也可以在声明时初始化:

Student s2 = {"Bob", 21, 90.0};

结构体数组

结构体可以用于定义数组,例如存储多个学生的信息:

Student class[3] = {
    {"Alice", 20, 85.5},
    {"Bob", 21, 90.0},
    {"Charlie", 22, 78.0}
};

结构体指针

结构体指针可以通过箭头运算符(->)访问成员:

Student *ptr = &s1;
cout << ptr->name; // 输出Alice

函数参数与返回值

结构体可以作为函数参数或返回值:

void printStudent(Student s) {
    cout << "Name: " << s.name << ", Age: " << s.age << ", Score: " << s.score << endl;
}

Student createStudent(string name, int age, float score) {
    Student s;
    s.name = name;
    s.age = age;
    s.score = score;
    return s;
}

结构体的嵌套

结构体可以嵌套其他结构体,例如定义一个包含生日的学生结构体:

struct Date {
    int day;
    int month;
    int year;
};

struct StudentWithBirthday {
    string name;
    Date birthday;
    float score;
};

初始化嵌套结构体:

StudentWithBirthday s3 = {"Alice", {15, 5, 2000}, 85.5};

结构体与函数

结构体常用于封装数据并传递给函数,例如计算学生的平均成绩:

float averageScore(Student students[], int size) {
    float sum = 0;
    for (int i = 0; i < size; i++) {
        sum += students[i].score;
    }
    return sum / size;
}

调用示例:

Student class[3] = {
    {"Alice", 20, 85.5},
    {"Bob", 21, 90.0},
    {"Charlie", 22, 78.0}
};
cout << "Average score: " << averageScore(class, 3);

结构体是C++中组织和管理复杂数据的有效工具,广泛应用于实际编程中。

你可能感兴趣的:(c++,算法,开发语言)