ITPub博客

首页 > 应用开发 > > c++ 中0长度的数组

c++ 中0长度的数组

作者:helei1000 时间:2019-09-17 15:52:11 0 删除 编辑

长度为0的数组的作用,纯c

#includestruct Test {

int len;

char data[0];

};

int main()

{

char str[] = "abc";

Test* t = (Test*)malloc(sizeof(struct Test) + sizeof(str));

t->len = sizeof(str);

memcpy(t->data, str, sizeof(str));

printf("len: %d\n", t->len);

printf("data: %s\n", t->data);

free(t);

}

很方便的保存带有不定长度的数据,譬如:网络的数据,图片,视频的数据

这个功能只是在gnu的扩展中,在vs中编译时有warnning的。

一般纯c中使用这个功能比较方便。

在vs中有告警为: warning C4200: 使用了非标准扩展: 结构/联合中的零大小数组,当 UDT 包含大小为零的数组时,无法生成复制构造函数或副本赋值运算符。在清楚这些告警的情况下,可以使用如下的方法去除这个告警

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2613/viewspace-3128616/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-16

  • 博文量
    94
  • 访问量
    678