合理改变结构体体元素声明顺序,节省内存空间

#include typedef struct Goods { chara[18]; //18 doubleb; //8 charc; //1 intd; //4 shorte; //2 }Goods; int main() { Goods a[10]; printf("%d\n",sizeof(Goods)); return 0; }

实际结果如下图:
合理改变结构体体元素声明顺序,节省内存空间
文章图片


charc;

的声明放在结构体内第二行声明,其它代码不变
#include typedef struct Goods { chara[18]; //18 charc; //1, doubleb; //8 intd; //4 shorte; //2 }Goods; int main() { Goods a[10]; printf("%d\n",sizeof(Goods)); return 0; }

【合理改变结构体体元素声明顺序,节省内存空间】重新运行
合理改变结构体体元素声明顺序,节省内存空间
文章图片

只是调整了结构体内变量的声明顺序,就减少了4个字节的内存。
合理改变结构体体元素声明顺序,节省内存空间
文章图片

上图左右两边分别为两段程序的结构体在内存的存放情况:
因为程序二将char c;
移至了char a[18]; 后。
故char c; 原来存在24现在存储在了14,这样24-27空出的内存就用来存储后面的变量。
由此可知,合理安排结构体内变量的声明顺序可以减少程序所占用的内存。
结构体在占用内存的情况详见。
结构体的补齐与对齐:https://blog.csdn.net/chuhe163/article/details/80247207

    推荐阅读