一.关键一点
最关键的一点:结构体在内存中是一个矩形,而不是一个不规则形状
二.编程实战
#include <stdlib.h>
#include <stdio.h> struct A
{
int a;
char b;
}; int main()
{
struct A a;
a.a = ;
a.b = ;
printf("%p\n", &a); system("pause");
}
结构体代码
我们可以看到前四个字节是int a的 后四个字节是 char b的 虽然只用了前面一个字节 后面三位都用cc给替代了
如果在结构体中再定义一个char变量,则继续多分配的内存中的后一个字节 还是八个,(按最大的单位进行对齐)
还有就是如果改了顺序,则内存也变了
三.几个例子
这是这个结构体的内存大小为12
再举个列子:
求这个结构体大小
为十二个字节,这里有个有意思的地方,当short放到小单位里面是要以两个字节对齐,所以放在后面的两个字节中