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

规则有三:

  1. 结构体中元素按照定义顺序依次置于内存中, 但并不是紧密排列的.
    从结构体首地址开始依次将元素放入内存时, 元素被放置在自身对齐大小的整数倍地址上.
  2. 如果结构体大小不是所有元素中最大对齐大小的整数倍,则结构体对齐到最大元素对齐大小的整数倍, 填充空间放置到结构体末尾.
  3. 基本数据类型的对齐大小为自身的大小, 结构体数据类型的对齐大小为其元素中最大的对齐大小.
posted @ 2023-04-09 23:53  Khrushchefox  阅读(18)  评论(0编辑  收藏  举报