c语言中结构体内存体内存单元大小

绝地灬酷狼 2022-12-10 05:57 174阅读 0赞

结构体内存体内存单元

众所周知结构体内存单元有个原则:
内存对齐:即结构体内存单元字节个数是结构体内 所占最多的字节个数数据类型整数倍
在这里插入图片描述

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. struct Sample
  4. { short int a;
  5. char b[10];
  6. float c;
  7. double d;
  8. }s;
  9. //s是Sample类型变量
  10. int main(int argc, char *argv[])
  11. {
  12. printf("变量s所占字节个数%d\n",sizeof(s));
  13. printf("a %X\n",&s.a); // 短整型 2个字节
  14. printf("b %X\n",s.b); //数组名字是首地址不需取址符号
  15. //一个 字符占一个字节
  16. printf("c %X\n",&s.c); //单浮点类型 占4个字节
  17. printf("d %X",&s.d); // 双浮点类型占8个字节
  18. system("PAUSE");
  19. return 0;
  20. }

运行如下:
在这里插入图片描述

结构体的内存字节数 为 **最大数据类型字节数double(8个字节)**的三倍

这种规则也叫***内存对齐***,我们修改结构体内的字符数长度为11

结构体内存变化如下:

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,174人围观)

还没有评论,来说两句吧...

相关阅读

    相关 结构体内对齐

    结构体内存对齐规则 > 1. 第一个成员在与结构体变量偏移量为0的地址处。 > 2. 其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。 > 对齐数 = 编

    相关 c语言结构体内对齐问题

        c语言中结构体使用是非常广泛的,但是结构体有一个问题,就是如果开头的字段属性是字符类型(char),紧跟着的是其他类型,比如整型、长整型、双精度、浮点型,这时候结构体的

    相关 关于结构体内对齐总结

    内存对齐计算可谓是笔试题的必考题,但是如何按照计算原则算出正确答案一开始也不是很容易的事,所以专门通过例子来复习下关于结构体内存对齐的计算问题。(编译环境为vs2015)