c语言 乱序字符,C语言中两种结构体成员初始化方式:顺序和乱序

前言

C语言中的结构体类型在进行成员初始化时,我们通常采用顺序初始化的方式。今天,在看同事写的代码时,发现还可以采用乱序的方式进行初始化,并且这种方式可以明确指定每个成员的值,看起来比较清晰。

1、参考

2、两种结构体成员初始化方式:顺序和乱序

顺序:

typedef struct _data_t {

int a;

int b;

}data_t;

data_t data = {10,20};

乱序:

typedef struct _data_t {

int a;

int b;

}data_t;

data_t data = {

.a = 10,

.b = 20,

};

3、编程实战#include

#include

typedef struct _circle_s

{

float radius;

int perimeter;

} circle_s;

int main(int argc, char **argv)

{

#if 0 //结构体顺序初始化

circle_s cir = {10.0, 20};

#endif

#if 1 //结构体乱序初始化,需要支持C99规范的编译器支持

circle_s cir =

{

.radius = 20.0,

.perimeter = 40,

};

#endif

printf("radius: %f, perimeter: %d\n", cir.radius, cir.perimeter);

system("pause");

return 0;

}

注:

结构体乱序初始化是C99中的新特性,需要支持C99规范的编译器支持,比如VS2013编译器cl.exe,但是VS2010编译器就不支持C99规范(支持C89规范)。

linux内核中就是采用乱序这种方式初始化struct。

THE END!

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2963033731@qq.com

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值