目录引言
1.动态内存管理
2.结构体2.1定义语法2.2定义示例2.3初始化2.4结构体赋值2.5结构体数组2.6结构体指针赋值
3.学生管理系统附:结构体变量的存储原
当前文章介绍动态堆空间内存分配与释放,C语言结构体定义、初始化、赋值、结构体数组、结构体指针的相关知识点,最后通过一个学生管理系统综合练习结构体数组的使用。
C语言代码----->编译----->链接------>可执行的二进制文件(windows下xxx.exe)二进制文件中的数据是如何摆放的?文本数据段、静态数据段、全局数据段。
堆栈空间:代码在运行的时候才有的空间。栈空间:系统负责申请,负责释放。比如:函数形参变量、数组……堆空间:程序员负责申请,负责释放。
结构体的概念:可存放不同数据类型的集合。比如:存放一个班级学生的信息。可以使用一个结构体存放一个学生的信息。一个结构体数组存放整个班级的学习信息。数组的概念:可存放相同数据类型的集合。
内存是以字节为单位编号的,某些硬件平台对特定类型的数据的内存要求从特定的地址开始,如果数据的存放不符合其平台的要求,就会影响到访问效率。所以在内存中各类型的数据按照一定的规则在内存中存放,就是对齐问题。而结构体所占用的内存空间就是每个成员对齐后存放时所占用的字节数之和。
计算机系统对基本数据类型的数据在内存中存放的限制是:这些数据的起始地址的值要求是某个数K的倍数,这就是内存对齐,而这个数K就是该数据类型的对齐模数(alignmentmodulus)。这样做的目的是为了简化处理器与内存之间传输系统的设计,并且能提升读取数据的速度。
ii.将各数据成员为了内存对齐,按各自对齐模数而填充的字节数累加到sum_a上,记为sum_b。
对齐模数是#pragmapack指定的数值与该数据成员自身长度相比较得到的数值较小者。该数据相对起始位置应该是对齐模数的整数倍。
该模数则是#pragmapack指定的数值与结构体内最大的基本数据类型成员长度相比较得到的数值较小者。结构体的长度应该是该模数的整数倍。
到此这篇关于C语言结构体(struct)的文章就介绍到这了,更多相关C语言结构体struct内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!