| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> c语言进阶 结构体的声明 -> 正文阅读 |
|
[C++知识库]c语言进阶 结构体的声明 |
c语言进阶 结构体的声明一. 结构体的声明1.1 结构体的基础知识 为什么要有结构体比如说 我想要描述一个复杂对象 学生 我不能只用一个整型数据或者一个浮点型数据把他描述出来 作为一个学生 他要有名字 姓名 学号等等 代码表示如下
1.2 结构体的声明我们说 结构体声明有以下格式
则 我们可以写出以下的声明格式
1.3 特殊的声明在某些情况下 我们可以不写出结构体的名字来声明结构体 例如
那么写到这里有一个问题
上面这段代码合法嘛?
1.4 结构体的自引用在结构体中包含一个类型为该结构体的成员是否可以呢? 代码如下
运行结果如下 我们可以发现 这样子的调用是不可以的 下面是正确的自引用方式
1.4.1 一个小问题
上面这段代码是否可行? 正确答案是不可行 会报错 因为typedef的定义还未完成 结构体内不能识别Node是什么东西 正确做法应该是这样子 1.5 结构体变量的定义和初始化这个其实在我们的熟悉结构体当中已经详细的讲解了 连接在这里 熟悉c语言结构体 1.6 结构体内存对齐到这里为止我们已经掌握了结构体的基本使用了 在这里我们开始深入探讨一个问题 计算结构体的大小
请问上面这段代码会输出什么? 对于不知道结构体对齐的初学者来说 很有可能认为会输出两个6 但是实际上呢? 我们来看看运行的结果
其实这里就设计到结构体的一个考点 结构体对齐
那么 根据上面的法则 我们来画图尝试一下这两道练习题
1.6.1 为什么要内存对齐
总体来说就是一个以空间换时间的做法 1.6.2 对我们的启发在设计结构体的时候 我们既要满足对齐 又要节省空间 那么我们就需要 让占用空间小的成员 尽量集中在一起
1.7 修改默认对齐数
1.8 结构体传参这里在我们上一篇介绍结构体的文章里面也讲到过了 以上就是本篇博客的全部内容啦 由于博主才疏学浅 所以难免会出现纰漏 希望大佬们看到错误之后能够 不吝赐教 在评论区或者私信指正 博主一定及时修正 那么大家下期再见咯 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 10:15:53- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |