一 结构体的申明
- 结构体的申明示例如下:
struct stu
{
char name[20];
int age;
float score;
};
二 结构体变量的定义及初始化
- 示例一:
struct stu
{
char name[20];
int age;
float score;
}s1={“xxxx”,22,98.5f};
- 示例二:
struct stu s2={“yyyy”,26,68.5f};
- 示例三
struct stu s3={.name=”zzzz”,.age=45,.score=45.6f}
三 结构体变量的读取
- 示例一
struct stu
{
char name[20];
int age;
float score;
}s={0};
s.name,s.age,s.score;
- 示例二
struct stu
{
char name[20];
int age;
float score;
}*ps=&s;
ps->name,ps->age,ps->float;
四 结构体的内存对齐
详如下示例:
struct s
{
char c;
int a;
int b;
long long l;
};
注:其中蓝色表示变量c,绿色表示变量a,红色表示变量b,黄色表示bianliangl;
c占一个字节,且是第一个成员变量,所以放在起始位置,a占四个字节,所以必须放在第0/4/8...格处,因为第0格已经有变量占据,所以放在第4格,b占四个字节,所以必须放在第0/4/8...格处,因为第0/4格已经有变量占据,所以放在第8格,l占八个字节,所以必须放在第0/8/16... 格处,因为第0/8格已经有变量占据,所以放在第16格,故本结构体占24格字节;
综上所述,每个结构体成员都放在内存中所创建的空间的整数倍的位置,前面如果有其他成员占据,则按照整数倍的位置点往后顺延放置,结构体的总大小是最大成员的整数倍;