news 2026/9/2 18:40:28

C++ 结构体(struct)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++ 结构体(struct)

结构体的定义与声明

在C++中,结构体(struct)是一种用户自定义的数据类型,用于将不同类型的数据组合成一个单一的复合类型。结构体的定义方式如下:

struct StructName { type1 member1; type2 member2; // 更多成员... };

例如:

struct Person { std::string name; int age; float height; };

结构体的初始化

结构体可以通过多种方式初始化:

  1. 直接初始化
Person p1 = {"Alice", 25, 1.65f};
  1. 成员逐个赋值
Person p2; p2.name = "Bob"; p2.age = 30; p2.height = 1.75f;
  1. C++11统一初始化
Person p3 {"Charlie", 35, 1.80f};

结构体的访问

结构体的成员通过点运算符(.)访问:

std::cout << p1.name << " is " << p1.age << " years old." << std::endl;

如果结构体变量是指针,则使用箭头运算符(->)访问:

Person* ptr = &p1; std::cout << ptr->name << std::endl;

结构体与类的区别

在C++中,structclass非常相似,主要区别在于默认访问权限:

  • struct的成员默认是public
  • class的成员默认是private

例如:

struct ExampleStruct { int x; // 默认为 public }; class ExampleClass { int x; // 默认为 private };

结构体的嵌套

结构体可以嵌套其他结构体或类:

struct Address { std::string city; std::string street; }; struct Employee { std::string name; Address address; };

结构体与函数

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

void printPerson(const Person& p) { std::cout << p.name << ", " << p.age << std::endl; } Person createPerson(std::string name, int age, float height) { return {name, age, height}; }

结构体的大小与内存对齐

结构体的大小由其成员的总大小和内存对齐决定。可以使用sizeof运算符获取结构体的大小:

std::cout << sizeof(Person) << std::endl;

内存对齐可以通过#pragma packalignas关键字调整:

#pragma pack(1) // 取消对齐 struct PackedStruct { char c; int i; }; #pragma pack() // 恢复默认对齐

结构体的高级特性

C++11及更高版本为结构体引入了更多特性:

  1. 成员函数: 结构体可以包含成员函数:
struct Point { int x, y; void print() { std::cout << "(" << x << ", " << y << ")" << std::endl; } };
  1. 构造函数: 结构体可以定义构造函数:
struct Point { int x, y; Point(int x, int y) : x(x), y(y) {} };
  1. 运算符重载: 结构体可以重载运算符:
struct Point { int x, y; Point operator+(const Point& other) { return {x + other.x, y + other.y}; } };

结构体的应用场景

结构体常用于以下场景:

  • 组织相关数据(如坐标、配置参数)。
  • 作为轻量级的数据容器(与类相比)。
  • 与C语言兼容的数据结构(如网络协议、文件格式)。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 21:52:41

智能改写工具在论文降重中的应用:六种AI技术提升文本质量的策略

排名 工具/方法 核心优势 适用场景 1 aibiye 智能降重学术语言优化 初稿完成后深度润色 2 aicheck 多维度查重选题辅助 全程论文质量监控 3 秒篇 一键生成逻辑结构优化 紧急补论文初稿 4 AskPaper 文献解析重点提炼 文献综述与理论支撑 5 知网人工降重 专…

作者头像 李华
网站建设 2026/9/2 23:31:58

OceanBase的嵌入式数据库:vscode+python+seekdb

通过动手实验体会vibe coding 在实验前需要具备的前提条件是&#xff1a; 1要安装好vscode 2 要安装好Python环境 3 需要seekdb 4 需要powermem 5 Jupyter插件&#xff08;非必须&#xff0c;但是实际用过以后还是装吧&#xff09; 这里的1和2做开发的人都知道。 3和4其…

作者头像 李华
网站建设 2026/9/2 21:52:12

地图可视化不一定要Python代码,BI也能画的很好看

地图可视化是数据分析中比较常见的一种呈现方式&#xff0c;可以制作热力图、地理坐标、路径图等&#xff0c;之前我尝试过用Python的carcartopy、plotly、folium来绘制&#xff0c;虽然效果不错&#xff0c;但需要有一定的代码能力和地理坐标知识。 对于一般的业务可视化来说&…

作者头像 李华
网站建设 2026/9/2 21:52:13

学术写作中的AI改写工具:六种高效优化论文查重结果的详细指南

排名 工具/方法 核心优势 适用场景 1 aibiye 智能降重学术语言优化 初稿完成后深度润色 2 aicheck 多维度查重选题辅助 全程论文质量监控 3 秒篇 一键生成逻辑结构优化 紧急补论文初稿 4 AskPaper 文献解析重点提炼 文献综述与理论支撑 5 知网人工降重 专…

作者头像 李华
网站建设 2026/9/3 0:25:18

查重结果超过30%?运用这些方法,快速提升论文原创性。

最新研究数据揭示&#xff0c;全球气温上升与极端气候事件发生频率上升之间存在明确的因果关系&#xff0c;这一发现通过科学验证表明环境温度变化会直接引发更为频繁的异常天气模式。 首先&#xff0c;咱们聊聊人工降重的基本功 近年来&#xff0c;人工智能技术发展迅猛&…

作者头像 李华
网站建设 2026/9/2 19:19:32

相似度高于30%?五种科学改写方法助你符合学术要求。

最新研究数据揭示&#xff0c;全球气温上升与极端气候事件发生频率上升之间存在明确的因果关系&#xff0c;这一发现通过科学验证表明环境温度变化会直接引发更为频繁的异常天气模式。 首先&#xff0c;咱们聊聊人工降重的基本功 根据最新调研数据&#xff0c;近年来人工智能…

作者头像 李华