2021.11.30day22 C语言关于结构的笔记

结构:
    结构是程序员自己设计的一种数据类型,用于描述一个事物的各项信息,
    由若干个不同的基础数据类型组成

    设计:
        struct 结构名(自己起名字)
        {
            类型 成员名;
            /* data */
        };
        
        定义结构变量:
            (struct 结构名)结构变量名;
            注意:定义结构变量,不能省略struct

            定义结构变量并初始化:

                struct 结构名 结构变量名 = {v1,v2,v3...};
                注意:要根据结构设计成员的顺序依次赋值

                struct 结构名 结构变量名 ={.成员名=v3,.成员名=v2...};
                注意:只初始化某些成员,可以乱序初始化

                注意:同类型的结构变量相互直接整体赋值或初始化
            访问结构成员:
                结构变量名.成员名;
                结构指针->成员名;
            结构作为函数形参时:
                由于结构变量的字节数普遍较大,普通结构变量的值传递效率较低
                因此建议传递结构指针,如果不需要修改结构变量的值,可以用const保护

            typedef重定义结构类型:
                typedef struct 结构名 结构名;
                之后定义结构变量就可以不加struct

                typedef struct 结构名
                {
                    ...
                }结构名;
                之后定义结构变量就可以加struct
            注意:
                一般结构题变量建议存放在堆内存
                malloc(sizeof(结构名*个数));

      如何计算结构的字节数:
                结构成员的顺序会影响结构的总字节数,因此在设计结构时
                如果成员的顺序安排合理可以大大节约内存

                内存对齐:
                    假设第一个成员从零地址开始,存储每个成员的地址编号
                    必须能被他的类型字节数整除,如果不能整除,则会填充一些
                    空白字节
                内存补齐;
                    结构的总字节数,必须能被他的最大成员的类型字节数整除
                    如果不能整除那么在末尾填充一些空白字节
                注意:
                    在Linux系统下,计算结构的对齐补齐时,如果成员的字节数超过4字节则按
                    4字节计算
                    在windows下哦啊按实际情况对齐补齐

                #pragma pack(n) 设置对齐、补齐的最大字节数
                        n==1\2\4  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值