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

相关推荐
736c26 分钟前
C语言-数组 07
c语言·开发语言
kakakahahahaha1 小时前
【Windows】C盘低空间反复复发的排查与扩容边界
c语言·windows·电脑·笔记本电脑·内容运营·软件需求
LuminousCPP3 小时前
数据结构-二叉树(六):BFS层序遍历与完全二叉树判断|复用链式队列 + (N_0=N_2+1) 性质证明
c语言·数据结构·笔记·算法·二叉树·宽度优先
Brilliantwxx3 小时前
【Linux】 进程(10) 进程控制深度解析:创建、终止与等待
linux·运维·服务器·c语言·开发语言·网络
wuyk5554 小时前
从零吃透Modbus通信|第7章:终极工程整合(模块化架构、双模式主机从机、RTOS适配、量产级模板)
c语言·stm32·学习·架构
卢锡荣4 小时前
国产PD3.1全集成Type-C管控芯片LDR6020P
c语言·开发语言
你压到我腿毛了6665 小时前
C语言冒泡算法(Bubble sort)
c语言·数据结构·算法
小雨笙笙7 小时前
C语言:指针
c语言·开发语言
卢锡荣9 小时前
Type-C口电子产品离不开的C口逻辑专用控制芯片介绍
c语言·开发语言