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

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

在 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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。