C语言小记:结构体及其在内存中的储存形式

1.结构体

  • 结构体的作用:自定义一个包含多种不同数据类型的变量。

  • 语法:

    struct 结构体名称
    {结构体成员1;结构体成员2;结构体成员3;...
    }
  • 定义结构体变量:

    include<stdio.h>struct RCC//声明一个结构体类型RCC,其中有两个char类型变量,一个int类型变量。
    {char cr;char cfgr;int cf;
    };int main(void)
    {struct RCC rcc;//定义一个结构体变量rcc.return 0;
    }

2.结构体变量的在内存中的存储形式:

首先我们来运行一段代码

#include<stdio.h>int main(void)
{struct RCC{char cr;char cfgr;int cf;};struct RCC rcc = {'q','w',48};printf("  cr的地址:%p\n",&rcc.cr);printf("cfgr的地址:%p\n",&rcc.cfgr);printf("  cf的地址:%p\n",&rcc.cf);return 0; } 

运行结果

观察运行发现rcc.cr的地址再000000000062FE10,rcc.cfgr的地址在000000000062FE11,rcc.cf的地址在000000000062FE14。这是由于C语言在储存结构体中不同类型的数据结构时,会以4个字节为一个单元进行存储,当四个字节容纳不下下一个类型的数据时,C语言编译器会将这个单元中没有存放数据的剩余内存空下,转而存放在下一个单元中。如图2所示。

图2

所以,为了节省内存空间,在声明结构体时,尽量合理摆放结构体中各个变量标识符的先后顺序,合理利用内存空间。

3.结构体的地址

结构体变量的地址=结构体第一个成员的地址,如图3

代码:

#include<stdio.h>int main(void)
{struct RCC{char cr;char cfgr;int cf;}rcc = {'q','w',48};printf("   rcc的地址:%p\n",&rcc);printf("rcc.cr的地址:%p\n",&rcc.cr);return 0; }

作者声明:文章原创不易,转载引用请声明出处。

C语言小记:结构体及其在内存中的储存形式相关推荐

  1. 在c语言中char型数据在内存中的储存形式为什么

    在c语言中char型数据在内存中的储存形式为"ASCII码".在C语言中,将一个字符常量放到一个字符变量中,实际并不是把该字符本身放到内存单元中,而是将与该字符相对应的ASCII码 ...

  2. c语言将结构体存储在数组中,结构体数组方法用法 _C语言-w3school教程

    C语言 的 结构体数组 在C语言编程中可以将一系列结构体来存储不同数据类型的许多信息. 结构体数组也称为结构的集合. 我们来看一个数组结构体的例子,存储5位学生的信息并打印出来.创建一个源文件:str ...

  3. c语言typedef结构体_typedef在C中具有结构的示例

    c语言typedef结构体 The structure is a user-defined data type, where we declare multiple types of variable ...

  4. C/C++ 结构体成员在内存中的对齐规则(转载)

    这几天在看王艳平的<windows 程序设计>,第5章讲解了MFC框架是怎么管理窗口句柄到窗口实例之间的映射,用到了两个类CPlex和CMapPtrToPtr,用于管理内存分配的类(避免因 ...

  5. 11.Go语言干货-结构体

    1. 类型别名与自定义类型 1.1 自定义类型 在Go语言中有一些基本的数据类型,整型.string.浮点型.布尔等数据类型. 在Go语言中可以根据自身的需求,使用关键字type自定义数据类型. 自定 ...

  6. C语言之结构体及位段

    目录 结构体 结构体与数组 结构体成员类型 结构体的声明 结构体自引用 结构体的定义和初始化 结构体成员的访问 结构体内存对齐 结构体的对齐规则 为什么要内存对齐 计算成员变量相对于结构体类型的偏移量 ...

  7. 【C 语言】结构体 ( 结构体 数组 作为函数参数 | 数组 在 堆内存创建 )

    文章目录 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 二.完整代码示例 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 在上一篇博客 [C 语言]结构体 ( 结构体 数 ...

  8. C语言定义了一个结构体怎么分配内存?C\C++中结构体变量与结构体指针内存分配问题?

    C语言定义了一个结构体怎么分配内存?C\C++中结构体变量与结构体指针内存分配问题? 问题1:结构体指针最开始怎么分配内存?用sizeof()是不能确定大小的. 问题2:给结构体变量分配之后,是否还要 ...

  9. c语言结构体数组内存大小,如何为C语言的结构体数组分配/释放内存?

    如何为C语言的结构体数组分配/释放内存? struct emp { char name[10]; float salary; }; int main(int argc,char* argv[]) { ...

最新文章

  1. r语言 编辑 d3.js_d3.js的语言介绍
  2. c语言通过域组策略下发软件,windows 2008 server 域环境通过组策略下发计划任务(示例代码)...
  3. Python使用xlrd和xlwt读取和写入excel详细教程
  4. 【荐】说说CSS Hack 和向后兼容
  5. display:inline、block、inline-block的区别
  6. PMCAFF原创作者人气榜,快来看看你排第几?
  7. 读书笔记:黑客与画家
  8. DWZ (JUI) 教程 navTab 刷新分析
  9. netlink怎么读_内核交互 netlink,检测部分进程死亡和启动。
  10. python从小白到大牛百度云盘_Java从小白到大牛 (关东升著) 中文pdf+mobi版[36MB]
  11. Struts tiles入门(最最简单的例子)
  12. 洛谷T1967 货车运输 Kruskal最大生成树倍增LCA
  13. StackRec: 通过迭代堆叠实现推荐系统的高效训练
  14. 简单介绍Javascript匿名函数和面向对象编程
  15. Shopee 店铺如何运营?运营思路心得分享
  16. Euraka学习笔记
  17. 中兴新支点操作系统_中兴新支点国产操作系统体验报告:使用流畅,性能稳定!...
  18. “双非计算机专硕”考博历程分享
  19. python采用强制缩进的方式是代码具有极佳的可读性_python入门
  20. 关于ERP、PLM、APS、MES的数据集成

热门文章

  1. 计算机网络中的层次结构
  2. 技术分享:国民远控向日葵如何通过BBR算法提升远控体验?
  3. 有奖 | 你想要什么样的程序员贴纸?
  4. HDU - 1873 看病要排队(优先队列)
  5. 首次公开,用了三年的 pandas 速查表
  6. DC初级摄友必学摄影技巧(转贴)
  7. 平安产险深圳分公司:温暖护航 2021中国平安中超联赛圆满落幕
  8. 电脑卸载神器 | 只有极客才会使用的卸载软件Geek Uninstaller
  9. 04 turtle库 | 发送小心心
  10. Spring Admin 入门