C99语法之初始化结构体

  C99中中结构体初始化也提供了一个比较奇葩的初始化方式:

#include<stdio.h>
#include<stdlib.h>

struct MyStruct
{
    int num;
    float fl;
    double db;
    _Bool b;//c99新增的bool类型 1,0

}my1 = { .num = 10, .fl = 10.9, .db = 19.8, .b = 0 };//初始化的形式


void main()
{

    printf("%d,%f,%f,%d", my1.num, my1.fl, my1.db, my1.b);

    struct MyStruct  my2 = (struct MyStruct){ .num = 10 };//默认会清零
    printf("\n%d,%f,%f,%d", my2.num, my2.fl, my2.db, my2.b);

    getchar();


    //不能用变量直接初始化,需要用结构体初始化的方式直接初始化一个结构体变量
    struct MyStruct *p = (struct MyStruct[])
    {
        [0] = { .num = 10, .fl = 10.9, .db = 19.8, .b = 0 },
            [1] = { .num = 10 }
    };

    getchar();
}

这个方式初始化结构体和 初始化数组那种方式是一样的。因此只是表现形式不一样其实质和原来的初始化是一样的。

            

                                                by:ECN14

 

转载于:https://www.cnblogs.com/ECN14/p/4154307.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值