C语言小记:结构体及其在内存中的储存形式
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语言小记:结构体及其在内存中的储存形式相关推荐
- 在c语言中char型数据在内存中的储存形式为什么
在c语言中char型数据在内存中的储存形式为"ASCII码".在C语言中,将一个字符常量放到一个字符变量中,实际并不是把该字符本身放到内存单元中,而是将与该字符相对应的ASCII码 ...
- c语言将结构体存储在数组中,结构体数组方法用法 _C语言-w3school教程
C语言 的 结构体数组 在C语言编程中可以将一系列结构体来存储不同数据类型的许多信息. 结构体数组也称为结构的集合. 我们来看一个数组结构体的例子,存储5位学生的信息并打印出来.创建一个源文件:str ...
- c语言typedef结构体_typedef在C中具有结构的示例
c语言typedef结构体 The structure is a user-defined data type, where we declare multiple types of variable ...
- C/C++ 结构体成员在内存中的对齐规则(转载)
这几天在看王艳平的<windows 程序设计>,第5章讲解了MFC框架是怎么管理窗口句柄到窗口实例之间的映射,用到了两个类CPlex和CMapPtrToPtr,用于管理内存分配的类(避免因 ...
- 11.Go语言干货-结构体
1. 类型别名与自定义类型 1.1 自定义类型 在Go语言中有一些基本的数据类型,整型.string.浮点型.布尔等数据类型. 在Go语言中可以根据自身的需求,使用关键字type自定义数据类型. 自定 ...
- C语言之结构体及位段
目录 结构体 结构体与数组 结构体成员类型 结构体的声明 结构体自引用 结构体的定义和初始化 结构体成员的访问 结构体内存对齐 结构体的对齐规则 为什么要内存对齐 计算成员变量相对于结构体类型的偏移量 ...
- 【C 语言】结构体 ( 结构体 数组 作为函数参数 | 数组 在 堆内存创建 )
文章目录 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 二.完整代码示例 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 在上一篇博客 [C 语言]结构体 ( 结构体 数 ...
- C语言定义了一个结构体怎么分配内存?C\C++中结构体变量与结构体指针内存分配问题?
C语言定义了一个结构体怎么分配内存?C\C++中结构体变量与结构体指针内存分配问题? 问题1:结构体指针最开始怎么分配内存?用sizeof()是不能确定大小的. 问题2:给结构体变量分配之后,是否还要 ...
- c语言结构体数组内存大小,如何为C语言的结构体数组分配/释放内存?
如何为C语言的结构体数组分配/释放内存? struct emp { char name[10]; float salary; }; int main(int argc,char* argv[]) { ...
最新文章
- r语言 编辑 d3.js_d3.js的语言介绍
- c语言通过域组策略下发软件,windows 2008 server 域环境通过组策略下发计划任务(示例代码)...
- Python使用xlrd和xlwt读取和写入excel详细教程
- 【荐】说说CSS Hack 和向后兼容
- display:inline、block、inline-block的区别
- PMCAFF原创作者人气榜,快来看看你排第几?
- 读书笔记:黑客与画家
- DWZ (JUI) 教程 navTab 刷新分析
- netlink怎么读_内核交互 netlink,检测部分进程死亡和启动。
- python从小白到大牛百度云盘_Java从小白到大牛 (关东升著) 中文pdf+mobi版[36MB]
- Struts tiles入门(最最简单的例子)
- 洛谷T1967 货车运输 Kruskal最大生成树倍增LCA
- StackRec: 通过迭代堆叠实现推荐系统的高效训练
- 简单介绍Javascript匿名函数和面向对象编程
- Shopee 店铺如何运营?运营思路心得分享
- Euraka学习笔记
- 中兴新支点操作系统_中兴新支点国产操作系统体验报告:使用流畅,性能稳定!...
- “双非计算机专硕”考博历程分享
- python采用强制缩进的方式是代码具有极佳的可读性_python入门
- 关于ERP、PLM、APS、MES的数据集成