C++ Struct 结构体用法详解与 C 语言区别

青禾
青禾
发布时间:2026-10-15 | 5人浏览过
原创

在 C++ 开发中,struct 不仅用于数据存储,更具备类特性。本文详细讲解 C++ struct 的多种定义方式、变量声明技巧以及 typedef 的使用,并对比其与 C 语言的根本差异,提供可直接运行的代码示例。

C 语言结构体基础回顾

理解 C++ struct 之前,需先明确 C 语言中的基础规则。在 C 中,结构体是一种自定义的数据类型,由不同的数据类型组成。

第1步:声明结构体

使用 struct 关键字定义结构体模板,包含内部成员的变量名和类型。

struct student
{
    char name[20];
    int id;
    float chinese;
    float english;
    float math;
};

其中,数据类型可以是基本类型(如 int, char, float),也可以是已定义的结构体类型。

第2步:实例化与调用

在 C 语言中,创建结构体变量时必须保留 struct 关键字。

struct student s1;
s1.id = 20191028456;
s1.math = 95;

通过点运算符 . 访问成员变量。

C++ 结构体的核心特性

C++ 对 struct 进行了增强,将其视为一种特殊的类。主要区别在于:C++ 允许在声明结构体变量时省略 struct 关键字,且 struct 可以包含构造函数、析构函数、友元等类成员。

第1步:省略关键字的定义

保持与 C 相同的结构定义,但在实例化时可简化语法。

// 定义结构体
struct student
{
    char name[20];
    int id;
    float chinese;
    float english;
    float math;
};

// 实例化:直接以结构体名作为类型
student s2;
s2.id = 20191031256;
s2.math = 60;

第2步:定义时同时声明变量

可以在结构体末尾直接列出变量名,一次性完成定义和初始化声明。

struct student
{
    char name[20];
    int id;
    float chinese;
    float english;
    float math;
} st3, st4; // 此处定义了两个该类型的变量

第3步:匿名结构体定义(慎用)

省略结构体名称,仅在定义时声明变量。这种类型没有全局标识符,无法在其他地方复用此类型。

struct
{
    char name[20];
    int id;
    float chinese;
    float english;
    float math;
} st5;

虽然可以通过 st5.id 访问成员,但由于该结构体类型无名,无法再创建同类型的其他变量。除非特定场景需要完全匿名的数据块,否则不建议使用这种方式,会降低代码可读性和复用性。

使用 typedef 简化结构体操作

为了进一步简化代码,避免每次都要写 struct 或使用较长的结构体名,可以使用 typedef 为结构体创建别名。

第1步:定义类型别名

将 typedef 应用于 struct 定义,赋予其一个更易读的名字。

typedef struct student
{
    char name[20];
    int id;
    float chinese;
    float english;
    float math;
} student_inf;

第2步:使用别名声明变量

之后可以直接使用 student_inf 作为类型来声明变量,语法更加简洁清晰。

student_inf s1;
s1.chinese = 95;
s1.id = 1;

以上就是 C++ Struct 结构体用法的详细内容,更多关于 C++ 结构体高级特性与面向对象应用资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表