c语言标准阵列,C语言灵活阵列成员

类型声明

具有至少一个构件的结构可以在结构的末端另外包含单个未指定长度的阵列构件。这称为灵活数组成员:struct ex1

{

size_t foo;

int flex[];

};

struct ex2_header

{

int foo;

char bar;

};

struct ex2

{

struct ex2_header hdr;

int flex[];

};

/* Merged ex2_header and ex2 structures. */

struct ex3

{

int foo;

char bar;

int flex[];

};

对大小和填充的影响

在计算结构的大小时,可伸缩数组成员被视为没有大小,尽管该成员与该结构的前一个成员之间仍然存在填充:/* Prints "8,8" on my machine, so there is no padding. */

printf("%zu,%zu\n", sizeof(size_t), sizeof(struct ex1));

/* Also prints "8,8" on my machine, so there is no padding in the ex2 structure itself. */

printf("%zu,%zu\n", sizeof(struct ex2_header), sizeof(struct ex2));

/* Prints 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值