C语言-结构体 08

结构体包含着一个对象所有信息,通过定义结构体可将对象实例化

结构体定义格式:

复制代码
​
//对象
typedef struct
{
    char name[100];
    int age;
} teacher_t;
​
//对象实例化/申明结构体变量并进行初始化
teacher_t yy_teacher = 
{
    .name = "ksh", //初始化列表,编译器会从.name这个地址开始,写入"ksh"这个字符串,但普通赋值语句(yy_teacher.name = "ksh";)不行,普通赋值语句是一个指针
    .age = 25,
};
​

结构体内存对齐: 规则: 结构体成员变量的地址得是自身数据类型所占用字节的整数倍; 结构体占用总字节数是自身最大成员变量数据类型所占用字节数的整数倍; 结构体成员变量结构体,这个成员变量结构体起始地址得和自身成员变量数据类型所占用最大字节数对齐;

复制代码
typedef struct
{
    char name[100]; 
    int age;
} teacher_t; 104个字节
​
typedef union
{
    char name[100];
    int age;
} people_t; 100个字节
​
typedef union
{
    ERR_CODE_UNREADY,
    ERR_CODE_OFFLINE,
} err_code_t; 4字节
​
typedef struct
{
    int a;      //0 ~ 7
    double b;   //8~15
    char c;     //16~19
    int d[5];   //20~39
    int *e;     //40~47
    teacher_t f;//48~161
    people_t g; //162~261
    err_code_t h;//262~265
} test_t;

266字节,得被8整除

相关推荐
晓蛋1 天前
c语言指的是什么意思
c语言·编译器·编程开发·集成开发环境·程序实例
傲世仙尊1 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
牵猫散步的鱼儿1 天前
重载、重写(覆盖)、重定义区别
c语言
phltxy1 天前
C 语言指针:从内存地址到灵活的数据访问
c语言
phltxy1 天前
C 语言中的数据存储:从类型到二进制位
c语言
wuminyu2 天前
HotSpot的轻量锁与膨胀后的ObjectMonitor状态重建原理
java·linux·c语言·jvm·c++
码不停蹄Zzz2 天前
指针用法篇——malloc和free指针详解
c语言
彧azz2 天前
操作系统时间管理与系统核心板块学习总结
c语言·笔记·学习·系统架构
白色的北极熊2 天前
c语言 牛客网 BC15
c语言
老当益壮梁奶奶2 天前
ARM汇编学习笔记(六):【i.MX6ULL】时钟系统与定时器(EPIT & GPT)
c语言·arm开发·嵌入式硬件·学习·51单片机