当前位置:首页信息竞赛 > 正文

C++中的结构体详细介绍

作者:野牛程序员:2023-02-22 11:40:55信息竞赛阅读 2735

在 C++ 中,结构体(struct)是一种用户自定义的数据类型,它可以包含不同类型的数据成员,包括基本数据类型(如 int、double 等)和其他结构体。下面是一个简单的结构体示例:

#include <iostream>
#include <string>

using namespace std;

// 定义结构体
struct Student {
    string name;    // 姓名
    int age;        // 年龄
    double score;   // 分数
};

int main() {
    // 创建结构体变量
    Student stu;

    // 设置结构体变量的值
    stu.name = "张三";
    stu.age = 18;
    stu.score = 90.5;

    // 输出结构体变量的值
    cout << "姓名:" << stu.name << endl;
    cout << "年龄:" << stu.age << endl;
    cout << "分数:" << stu.score << endl;

    return 0;
}

上面的代码定义了一个名为 Student 的结构体,它包含三个成员变量:nameagescore。然后在 main 函数中创建了一个 stu 变量,并对其成员变量进行了赋值。最后输出了结构体变量的值。

除了可以像上面那样单独定义结构体外,也可以将结构体定义在命名空间或类的内部。下面是一个将结构体定义在命名空间内部的示例:

#include <iostream>
#include <string>
using namespace std;
namespace mynamespace {    // 定义结构体
    struct Student {
        string name;    // 姓名
        int age;        // 年龄
        double score;   // 分数
    };
}
int main() {    // 创建结构体变量
    mynamespace::Student stu;    // 设置结构体变量的值
    stu.name = "张三";
    stu.age = 18;
    stu.score = 90.5;    // 输出结构体变量的值
    cout << "姓名:" << stu.name << endl;
    cout << "年龄:" << stu.age << endl;
    cout << "分数:" << stu.score << endl;    return 0;
}

在上面的代码中,结构体 Student 被定义在了 mynamespace 命名空间内部,因此在 main 函数中需要使用 mynamespace:: 前缀来访问它。

结构体还可以包含函数,这些函数被称为结构体的成员函数(member function)。下面是一个包含成员函数的结构体示例:


#include <iostream>
#include <string>
using namespace std;
struct Student {
    string name;    // 姓名
    int age;        // 年龄
    double score;   // 分数
    // 定义成员函数
    void print() {
        cout << "姓名:" << name << endl;
        cout << "年龄:" << age << endl;
        cout << "分数:" << score << endl;
    }
};
int main() {    // 创建
}



上面代码中的 Student 结构体新增了一个 print() 成员函数,它的作用是输出结构体的成员变量值。在 main() 函数中,先创建一个 stu 变量,并对其成员变量进行了赋值。然后通过调用 stu.print() 函数输出了结构体变量的值。

除了在结构体内部定义成员函数,也可以在结构体外部定义成员函数,只需要在函数名前加上结构体的名称和作用域解析符号即可。下面是一个在结构体外部定义成员函数的示例:

#include <iostream>
#include <string>
using namespace std;
struct Student {
    string name;    // 姓名
    int age;        // 年龄
    double score;   // 分数
    // 声明成员函数
    void print();
};
// 定义成员函数
void Student::print() {
    cout << "姓名:" << name << endl;
    cout << "年龄:" << age << endl;
    cout << "分数:" << score << endl;
}
int main() {    // 创建结构体变量
    Student stu;    // 设置结构体变量的值
    stu.name = "张三";
    stu.age = 18;
    stu.score = 90.5;    // 调用成员函数输出结构体变量的值
    stu.print();    return 0;
}

上面代码中的 Student 结构体定义了一个 print() 成员函数,但是并没有在结构体内部实现它。相反,它在结构体外部进行了定义,实现了与上一个示例中相同的功能。

结构体也可以作为函数参数进行传递,这样可以方便地对结构体变量进行操作。下面是一个使用结构体作为函数参数的示例:

#include <iostream>
#include <string>
using namespace std;
struct Student {
    string name;    // 姓名
    int age;        // 年龄
    double score;   // 分数};// 定义函数,传入结构体参数void printStudent(Student stu) {
    cout << "姓名:" << stu.name << endl;
    cout << "年龄:" << stu.age << endl;
    cout << "分数:" << stu.score << endl;
}
int main() {    // 创建结构体变量
    Student stu;    // 设置结构体变量的值
    stu.name = "张三";
    stu.age = 18;
    stu.score = 90.5;    // 调用函数输出结构体变量的值
    printStudent(stu);    
    return 0;
}

上面代码中的 printStudent() 函数接收一个结构体参数,并输出了结构体的成员变量值。在 main() 函数中,创建了一个 stu 变量,并对其成员变量进行了赋值。然后通过调用 printStudent(stu) 函数输出了结构体变量的值。

总之,结构体是 C++ 中一个非常有用的数据类型,它可以方便地组织数据,并且可以定义成员函数和重载运算符等操作。在实际编程中,我们可以使用结构体来表示一个具有一定属性和行为的对象,例如表示一个学生、一个汽车、一个银行账户等等。

下面是一些关于结构体的常见问题和回答:

Q: 结构体和类有什么区别?

A: 在 C++ 中,结构体和类的定义基本上是一样的,只是默认的访问权限不同。结构体的默认访问权限是公共的(public),而类的默认访问权限是私有的(private)。因此,结构体更适合于只包含数据成员而不包含成员函数的情况,而类更适合于包含成员函数的情况。但实际上,在 C++ 中,结构体和类之间的区别并不是很大,它们可以互相转换使用。

Q: 结构体和数组有什么区别?

A: 结构体和数组都可以用来存储一组相关的数据,但它们的用途和实现方式略有不同。数组一般用来存储同一种类型的数据,而结构体可以用来存储不同类型的数据。数组的元素是连续存储的,可以通过下标访问,而结构体的成员变量是离散存储的,需要通过成员变量名访问。另外,结构体可以包含成员函数,而数组不能。

Q: 什么时候需要使用结构体?

A: 当需要组织一组相关的数据,并且这些数据不仅仅是同一种类型的时候,可以考虑使用结构体。例如,表示一个学生可以包含姓名、年龄、学号、班级等信息,这些信息的类型不同,可以使用结构体来表示一个学生对象。此外,当需要在数据中包含一些操作时,也可以使用结构体来定义成员函数,方便地对数据进行操作。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • 企业网站建设
  • 最新推荐

    热门点击