c++中的结构体

前言

hello大家好啊,这里是文宇,不是文字,是文宇哦。

这是一期c++教程

C++中的结构体(struct)是一种用户自定义的数据类型,可以将不同类型的成员组合在一起,形成一个新的数据结构。结构体允许我们在一个单独的实体中存储并操作相关的数据。在本文中,我们将详细介绍C++中结构体的定义、初始化、访问成员、函数参数与返回值等内容。

一、结构体的定义


在C++中,我们可以使用关键字`struct`来定义结构体,语法如下:

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


在结构体的定义中,我们可以列出多个不同类型的成员变量,每个成员变量都有自己的名称和数据类型。成员变量的定义和普通变量的定义方式相同。

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

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

在上述示例中,我们定义了一个名为`Student`的结构体,它有三个成员变量:`name`表示学生姓名,`age`表示学生年龄,`score`表示学生的成绩。

二、结构体的初始化


结构体变量的初始化可以通过直接赋值来完成,也可以使用初始化列表。以下是两种初始化方式的示例:

1. 直接赋值

Student student1;
student1.name = "Alice";
student1.age = 18;
student1.score = 90.5;


在上述示例中,我们声明了一个名为`student1`的`Student`类型的结构体变量,并直接赋值给其成员变量。

2. 初始化列表

Student student2 = {"Bob", 20, 85.5};


在上述示例中,我们使用初始化列表来初始化`student2`结构体变量的成员变量。

三、结构体成员的访问


我们可以使用成员选择运算符`.`来访问结构体变量的成员。例如:

cout << "Name: " << student1.name << endl;
cout << "Age: " << student1.age << endl;
cout << "Score: " << student1.score << endl;


在上述示例中,我们输出了`student1`结构体变量的成员变量。

四、结构体作为函数参数


结构体可以作为函数的参数传递,可以通过值传递或引用传递。以下是两种传递方式的示例:

1. 值传递

void PrintStudentInfo(Student student) {
    cout << "Name: " << student.name << endl;
    cout << "Age: " << student.age << endl;
    cout << "Score: " << student.score << endl;
}

Student student = {"Alice", 18, 90.5};
PrintStudentInfo(student);


在上述示例中,我们定义了一个`PrintStudentInfo`函数,接收一个`Student`类型的参数,通过值传递调用该函数。

2. 引用传递

void ModifyStudentScore(Student& student, float newScore) {
    student.score = newScore;
}

Student student = {"Alice", 18, 90.5};
ModifyStudentScore(student, 95.5);
cout << "Modified Score: " << student.score << endl;


在上述示例中,我们定义了一个`ModifyStudentScore`函数,接收一个`Student`类型的引用参数,并修改了该结构体变量的成员变量。

五、结构体作为函数返回值


函数可以返回结构体类型的值,也可以返回结构体类型的指针。以下是两种返回方式的示例:

1. 返回结构体值

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

Student student = CreateStudent("Bob", 20, 85.5);
cout << "Name: " << student.name << endl;
cout << "Age: " << student.age << endl;
cout << "Score: " << student.score << endl;


在上述示例中,我们定义了一个`CreateStudent`函数,创建一个`Student`类型的结构体,并返回该结构体的值。

2. 返回结构体指针

Student* CreateStudent(string name, int age, float score) {
    Student* student = new Student;
    student->name = name;
    student->age = age;
    student->score = score;
    return student;
}

Student* student = CreateStudent("Bob", 20, 85.5);
cout << "Name: " << student->name << endl;
cout << "Age: " << student->age << endl;
cout << "Score: " << student->score << endl;
delete student;


在上述示例中,我们定义了一个`CreateStudent`函数,创建一个`Student`类型的结构体指针,并返回该指针。需要注意的是,在使用完结构体指针后,应当使用`delete`关键字释放动态分配的内存。

六、结构体的嵌套


结构体也可以嵌套在其他结构体中,从而形成更复杂的数据结构。以下是一个使用嵌套结构体的示例:

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

struct Person {
    string name;
    Date birthday;
};

Person person = {"Alice", {1990, 1, 1}};
cout << "Name: " << person.name << endl;
cout << "Birthday: " << person.birthday.year << "-"
     << person.birthday.month << "-"
     << person.birthday.day << endl;


在上述示例中,我们定义了一个名为`Person`的结构体,它有两个成员变量:`name`表示人名,`birthday`表示出生日期。其中,`birthday`是一个嵌套的`Date`结构体类型。

总结


结构体是C++中用于组织不同数据类型成员的一种用户自定义数据类型。通过结构体,我们可以将相关的数据组合在一起,并进行灵活的操作和传递。结构体可以作为函数参数和返回值,也可以嵌套在其他结构体中使用。使用结构体可以提高程序的可读性和模块化,增强代码的组织性和可维护性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文宇炽筱_潜水

有一个打赏就多写十篇文章

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值