• 社区 —频道 春城壹网 七彩云南 一网天下 2019-03-17
  • 陈坤9年之后重回小荧屏 2019-03-17
  • 医院建在“云端”上(聚焦·互联网医院新观察(上)) 2019-03-09
  • 山东十一选五专家杀号 Chinaunix首页 | 论坛 | 山东十一选五专家杀号
    • 博客访问: 750401
    • 博文数量: 239
    • 博客积分: 1039
    • 博客等级: 少尉
    • 技术积分: 1486
    • 用 户 组: 普通用户
    • 注册时间: 2011-01-06 09:40
    文章分类

    全部博文(239)

    文章存档

    2019年(3)

    2018年(2)

    2014年(1)

    2013年(187)

    2012年(47)

    分类: C/C++

    2018-12-12 16:19:31

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

    #include 
    
    struct 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);
    }
    
    1. 很方便的保存带有不定长度的数据,譬如:网络的数据,图片,视频的数据
    2. 这个功能只是在gnu的扩展中,在vs中编译时有warnning的。
    3. 一般纯c中使用这个功能比较方便。
    4. 在vs中有告警为: warning C4200: 使用了非标准扩展: 结构/联合中的零大小数组,当 UDT 包含大小为零的数组时,无法生成复制构造函数或副本赋值运算符。在清楚这些告警的情况下,可以使用如下的方法去除这个告警
    阅读(19976) | 评论(3) | 转发(0) |
    0

    上一篇:C++ 常量表达式

    下一篇:Postgresql中的filter

    给主人留下些什么吧!~~

    jxdeng32642018-12-24 12:50:56

    访问len 后面的数据很方便。

    wanjuncode2018-12-14 10:31:34

    这个就是 柔性数组吧?

    评论热议
    请登录后评论。

    登录 注册

  • 社区 —频道 春城壹网 七彩云南 一网天下 2019-03-17
  • 陈坤9年之后重回小荧屏 2019-03-17
  • 医院建在“云端”上(聚焦·互联网医院新观察(上)) 2019-03-09