结构体的初始化(笔记)

慢慢补充吧

先复习一下结构体类型的声明,与结构体变量的创建

    struct struct_type_name     //结构体类型名(非必须)
    {
        member_list;            //成员列表
    }struct_variable_name_list; //结构体变量名列表(非必须)

其中结构体类型名和结构体变量名列表都是不是必须的

  • 有类型名、有变量名。定义了一种结构体类型并命名,创建了一个(或多个)这种匿名类型的结构体变量
  • 有类型名,没有变量名。定义了一种结构体类型并命名,但是暂时没有创建这种类型的结构体变量
  • 没有类型名,有变量名。定义了一个匿名的结构体类型,创建了一个(或多个)这种匿名类型的结构体变量
  • 没有类型名,没有变量名。这种情况是符合语法的,但是没用。

结构体的指定初始化器

    struct StructTest
    {
        int a;
        int b;
        float f;
        double d;
    };

    struct StructTest test = {.d = 3.1};

还可以使用冒号

    struct StructTest
    {
        int a;
        int b;
        float f;
        double d;
    };

    struct StructTest test = {d : 3.1};

C语言中冒号的用处

  • 作为结构体的指定初始化器
  • 位域(Bit-Field)。主要功能是节省存储空间,降低结构体的大小。一般在内存非常宝贵的场景才会用到(如嵌入式)。位域的使用是不常见的,因为C的标准并没有规定如何对位域进行内存布局,不同的编译器对位域的处理方法可能不一样。位域的成员可以是int、unsigned int或者char类型。位域上的空间按照4个字节(int、unsigned int)或者1个字节(char)的方式来开辟。如果只有char,就一个字节一个字节进行开辟,不够了就再开辟一个字节。如果有(int、unsigned int),就四个字节四个字节进行开辟。
  • 条件语句(三目运算符)
  • 语句标签(与goto配合)
  • switch语句case后

除了第一点,其他的可以看这篇文章,不过他没有讲到第一点

c语言中冒号的用法_c语言冒号-CSDN博客

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值