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整除

相关推荐
wuyk55512 小时前
嵌入式驱动开发:量产级工程化实战(第9篇)——低功耗下的通信可靠性
c语言·驱动开发·stm32·单片机·嵌入式硬件
学逆向的12 小时前
C 突破编译器限制
c语言·开发语言·网络安全
endeavor1213 小时前
can总线(五)
c语言·stm32·单片机·can
老王爱玩车15 小时前
预处理详解
c语言·开发语言·学习
学逆向的16 小时前
C 控制台指令
c语言·开发语言·网络安全
沫璃染墨16 小时前
从零入门数据结构与算法(一):复杂度分析——从算法效率到时间与空间复杂度
c语言·开发语言·数据结构·笔记·算法·飞书
想做小南娘,发现自己是女生喵16 小时前
第三周学习文档 Linux C 多进程与多线程
linux·c语言·学习
听风若依18 小时前
函数栈帧的创建与销毁-重置版
c语言·学习
水饺编程18 小时前
第2章:Linux 基础,pwd 命令
linux·c语言·汇编
鱼很腾apoc18 小时前
【MySQL】 第1期 从核心概念到表约束全解析
linux·c语言·数据库·学习·mysql