C-结构体
结构体
创建和使用
#include <stdio.h>
struct Student // 结构体标签
{
int id; // 成员
char* name;
int age;
}s1 = {1, "小明", .age = 18}; // 结构变量
typedef struct Student Stu;
int main()
{
Stu* p = &s1;
printf("%d", p->id);
return 0;
}
内存大小
printf("%llu", sizeof(struct Student)); // 24
规则有三:
- 结构体中元素按照定义顺序依次置于内存中, 但并不是紧密排列的.
从结构体首地址开始依次将元素放入内存时, 元素被放置在自身对齐大小的整数倍地址上. - 如果结构体大小不是所有元素中最大对齐大小的整数倍,则结构体对齐到最大元素对齐大小的整数倍, 填充空间放置到结构体末尾.
- 基本数据类型的对齐大小为自身的大小, 结构体数据类型的对齐大小为其元素中最大的对齐大小.