当前位置: 首页 > ops >正文

C++(29):结构体

目录

一、结构体的基本概念

1. 定义与作用

2. 与 class 的区别

二、结构体的定义与使用

1. 基本语法

2. 初始化与访问

3. 输入

三、结构体的高级特性

1. 成员函数

2. 构造函数

3. 运算符重载

四、结构体的内存布局

1. 内存对齐(Alignment)

2. 位域(Bit Fields)

五、结构体的特殊用法

1. 匿名结构体

2. 结构体嵌套

六、结构体与面向对象编程

1. 继承

2. 多态

七、结构体与标准库的交互

1. 作为容器元素

2. 作为哈希表键

八、最佳实践与注意事项


一、结构体的基本概念

1. 定义与作用
  • 结构体struct)是一种用户自定义的复合数据类型,用于将多个不同类型的变量组合成一个逻辑单元。

  • 核心用途:数据聚合、简化复杂数据管理、面向对象编程的轻量化实现。

2. 与 class 的区别
特性structclass
默认访问权限publicprivate
默认继承权限publicprivate
惯用场景数据聚合(无/简单行为)封装数据与复杂行为

二、结构体的定义与使用

1. 基本语法

        结构体是一个可以包含多种数据类型的容器,包含的数据可以自定义。

struct 结构体名 {数据类型 成员1;数据类型 成员2;// ... 
};  // 注意分号不能省略

示例

struct Node {int id;string name;int yuwen;
};
2. 初始化与访问
// 默认初始化(成员值不确定)
Node n; // 访问成员
n.id = 1;// 初始化方式1Node n;n.id = 1;n.name = "xiaoli";n.yuwen = 88;cout << n.id << ' ' << n.name << ' ' << n.yuwen << '\n';// 初始化方式2Node p1 = { 1, "xiaoli",88 };cout << p1.id << ' ' << p1.name << ' ' << p1.yuwen << '\n';Point p2 {30, 40};              // 部分初始化(未初始化的成员为默认值)

 

3. 输入
// 定义学生结构体(建议更明确的命名如 Student)
struct Node {                //  命名int id;         // 学生学号string name;    // 学生姓名int yuwen;      // 语文成绩
} stu[1000];        //  全局固定大小数组(存在设计缺陷)int main() {int n;cout << "请输入学生人数:" << endl;cin >> n;       // 未校验输入合法性// 输入循环(存在数组越界风险)for (int i = 1; i <= n; i++) {  /stu[i].id = i;      
http://www.xdnf.cn/news/8217.html

相关文章:

  • 并发编程之线程安全lock
  • 看八股有感
  • 进销存管理系统:Java+Vue,含源码及文档,集成采购、销售、库存管理,实现数据互通,提升运营效率
  • 常见排序算法详解及其复杂度分析
  • 【沉浸式解决问题】System.getProperty(“user.dir“)获取不到项目根目录
  • 多线程编程的典型使用场景
  • 【RocketMQ 生产者和消费者】- 生产者启动源码-启动流程(1)
  • 查看使用宿主机模式的Docker容器端口
  • 九、日志分析和系统故障排查
  • 【知识图谱】数据处理与数据存储
  • VTK—三维图像重建和剖切
  • 【博通芯片方案】调试指令详解版二(无线)
  • 高等数学-连续
  • 【RocketMQ 生产者和消费者】- 生产者启动源码-创建 MQClientInstance(2)
  • yarn 命令运行问题 bug
  • 催化燃烧型氢气传感器的响应速度和恢复速度如何?
  • os:进程与线程上
  • OS虚拟内存管理
  • 武汉火影数字|数字企业馆制作 多媒体数字化展厅
  • 4 SLAM(同步定位与建图)学习指南
  • 【北邮通信系统建模与仿真simulink笔记】(2)2.3搭建仿真模型模块操作运行仿真
  • F5《2025年应用战略现状》报告:AI 落地加速,企业战略从讨论迈向行动
  • 从原理到实践:一文详解残差网络
  • 【Bluedroid】蓝牙 HID Host connect全流程源码解析
  • 简说Qt信号和槽
  • 雅思英语考试基本介绍
  • 案例分享——福建洋柄水库大桥智慧桥梁安全监测
  • 一文讲透:如何用AI生成时序图
  • 六:操作系统虚拟内存之帧分配
  • 鸿蒙Flutter实战:23-混合开发详解-3-源码模式引入