在C语言中,结构体的内存是由先到后顺序占用空间的。
先定义的在低地址,后定义的在高地址。地址采用空间对其策略。
其实这是一篇问题贴,一直没有弄懂是什么问题!!!
在结构体内存中
结构体首元素地址和结构体首地址一致。(C++不一致),c++中,一般会空出开始的4字节,为了区别对象地址,和第一个成员的地址。通常是1字节,但是字节对齐的时候,就占用了4字节。
实际上,你看到sizeof(空结构体) =4.
但是,首地址会影响后面的地址。
typedef struct { int a; char b; char c[12]; }stu; stu s={7,'c',"qqq"}; printf("%d\n",sizeof(stu)); printf("%p\n",&(s.a)); printf("%p %p %p %p\n",s, &s, &(s.a), &(s.c)); printf("%p %p %p %p\n",&s, &(s.a), &