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

C++的嵌套结构体

核心概念

  1. ​结构体嵌套​​:结构体成员可以是另一个结构体类型
  2. ​数据封装​​:将相关联的数据组织为逻辑单元
  3. ​层级建模​​:通过嵌套反映现实世界的包含关系(点→图形→图形集合)

 


 

定义语法格式

struct 外层结构体 {struct 内层结构体 成员名;  // 直接嵌套// 或内层结构体类型 成员名;    // 引用已定义的结构体
};

 


 

访问语法格式

  • 使用.运算符逐级访问:外层.内层成员.子成员

 


 

内存布局

  • 嵌套结构体成员在内存中连续存储
  • 总大小 = 各成员大小之和(考虑内存对齐)

 


 

设计原则

  1. 合理层级​​:建议嵌套不超过3层(避免过度复杂化)
  2. ​复用结构​​:公共数据类型(如Point)应单独定义
  3. ​内存管理​​:
    • 慎用大数组嵌套(如Circle c[100]可能栈溢出)
    • 推荐动态内存分配(new/malloc)处理大规模数据

 


 

示例 嵌套结构体的定义与初始化

  • 代码
    	#include <iostream>using namespace std;struct point{double x,y; };struct circle{point a;       // 坐标double radius; // 半径};struct circles{circle b[4];};int main(){circles c = {{{{2,2},4},{{3,3},9},{{4,4},16},{{5,5},25}}};for(int i = 0; i < (sizeof(c)/sizeof(c.b[0].a.x)/3); ++i){cout << "(" << c.b[i].a.x << "," << c.b[i].a.y << ")" << c.b[i].radius << endl;}return 0;}
    
  • 运行
    (2,2)4
    (3,3)9
    (4,4)16
    (5,5)25
    
http://www.dtcms.com/a/324447.html

相关文章:

  • Deep Learning MNIST手写数字识别 Mac
  • 【从源码角度深度理解 CPython 的垃圾回收机制】:第2课循环引用:标记清除-分代回收
  • 7.企业级AD活动目录的备份与恢复策略
  • 【celeba】-数据集的介绍
  • 驱动电路设计
  • Ollama+Deepseek+Docker+RAGFlow打造自己的私人AI知识库
  • 【软件测试】性能测试 —— 工具篇 JMeter 介绍与使用
  • AI质检数据准备利器:基于Qt/QML 5.14的图像批量裁剪工具开发实战
  • 升级 JDK 17 碰到的请求 https 问题
  • 从0开始的中后台管理系统-5(userList页面功能实现)
  • 自测电脑有没有木马
  • 深度学习周报(8.4~8.10)
  • 使用binutils工具解析目标文件符号表(叁)
  • Datawhale AI夏令营 多模态RAG环境问题
  • 海关 瑞数 失信企业 逆向 分析 后缀 rs
  • es查询小结
  • CSS优先级、HTTP响应状态码
  • BGP综合大实验
  • 人工智能-python-机器学习-模型选择与调优实战指南:从交叉验证到朴素贝叶斯分类
  • 为wordpress顶部header.php文件中调用不同的标题和摘要
  • 学习中的杂项知识
  • 在Word和WPS文字一页中实现一栏与多栏混排
  • 打靶日常-upload-labs(21关)
  • MyBatisPlus插件原理
  • Java 虚拟机运行时数据区组成详解
  • 【Vue2与Vue3的核心区别】响应式、运行时、编译器
  • 医学统计(随机对照研究分类变量结局数据的统计策略2)
  • 五种 IO 模型与阻塞 IO
  • Redis一站式指南二:主从模式高效解决分布式系统“单点问题”
  • 对话式BI有什么用?不懂技术也能用对话式BI搞定业务报表