【C语言】结构体 (结构体镶嵌结构体,结构体镶嵌联合体(哑元结构))

结构体对齐方式:
char a;
double dx;//dx[10] 80 82
char chb;
字节数为:16 //88

结构体变量的首地址,必须是结构体变量中的“最大基本数据类型成员所占字节数”的整数倍。
结构体变量中的每个成员相对于结构体首地址的偏移量,都是该成员基本数据类型的所占的字节数的整数倍。请添加图片描述

结构体变量的总大小,为结构体变量中“最大基本数据类型成员所占字节”的整数倍。
假设是从0地址开始
结构体和联合体
结构体中的各个成员都有自己的内存空间。(字节对齐)
请添加图片描述
请添加图片描述
数据类型不占字节

typedef struct ListNode
{
struct stu //结构体类型 不占字节
{
int a;
};
int b; 总字节为4
}


typedef struct ListNode
{
struct
{
int a;
}stu;
int b; 总字节为8
}


typedef struct ListNode
{
struct stu
{
int a;
}stu;
int b; 总字节为8 (变量有 stu和 b)
}
typedef struct ListNode
{
struct
{
int a;
};
int b; 总字节为8
}

联合体

联合体的各成员共享同一片内存空间。
其内存大小等于成员中占最大内存空间的大小
指针的解析能力和他的数据类型相同

union Node
{
    char a;
    char b;  //    unsigned char ch[2]; 不是数组。
                //a, b用的同一片空间 &x.a和&x.b相同
    short sx;
     

};
请添加图片描述

哑元结构

开辟的空间分为初始化区
和未初始化区
可以设计无名的结构体
也可以设计无名的联合体

union Node
{
    struct     //哑元结构
    {
        char a;
        char b;
    };
    short sx;
};
struct Node 
{
    char ch;  //1字节
    union       //4字节  //如果是union AF{}; 就不行了  就不是哑原结构了  总字节数就变为1 (因为不再是Node的成员,是一个类型)
    {                                                          
        int a;
        float b;
    };   //共8字节
};
  • 变化形式:
struct Node
{
    char ch;  //1字节
    union 
    {
        int a;
        float b;
    }AF;   //共8字节   //Node中由变量 ch和AF
};
struct Node
{
    char ch;  //1字节
    union AF     //联合体类型 不占字节
    {
        int a;
        float b;
    };   //共1字节
};

int main()
{
    struct Node s;
    Node::AF x;

}
struct Node
{
    char ch;  //1字节
   typedef union  
    {
        int a;
        float b;
    }AF;   //类型成员不会分配空间
};
//总大小为1字节

sprintf_s

float ft = 12.25f;
    sprintf_s(buff, 20, "%f", ft); 
     //可以把任意的浮点型转化为字符串。
    fprintf(stdout, "ft = %f", ft); //对sprintf_s转换后的数据进行输出

请添加图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值