在设计计算器和打卡机的时候很多已经见识过的知识但没理解,也有些可以想到的程序没有想出来。设计程序还是需要不断累积,或是跳出思维大胆猜想。每天因为问题绝大部分时间都是在尝试找出解决办法,以至于看了很多理解不了的东西,也花费了大量的时间。先把自己能够完全理解的记下来。
内存分配练习
typedef struct bb
{
int id;//a
double weight; //b
float height; //c
}BB;
typedef struct aa
{
char name[2];//a
int id;//b
short score; //c
short grade; //d
BB b;
/*
int id;//e
double weight; //f
float height; //g
*/
}AA;
BB:id开始为0-3,weight开始为4不能整除8,在id上增加4为0-7,weight为8-15,height开始为16-19,总长要为8的整数倍自动补到8位为16-23。总长24
起始地址为该变量的类型所占的整数倍,若不足则不足部分用数据填充至所占内存的整数倍。
该结构体所占内存为结构体成员变量中最大数据类型的整数倍。
空位为填充对齐所用空内存。
a a a a
b b b b b b b b
c c c c
AA:40 BB b结构组嵌套时与普通变量分开排列。
a a b b b b
c c d d
e e e e
f f f f f f f f
g g g g
总结:不同的写入方式可以省下更多空间,节约更多时间
例如:占用16位空间即可。
后续补充。