Chinaunix首页 | 论坛 | 博客
  • 博客访问: 752020
  • 博文数量: 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 包含大小为零的数组时,无法生成复制构造函数或副本赋值运算符。在清楚这些告警的情况下,可以使用如下的方法去除这个告警
阅读(20541) | 评论(3) | 转发(0) |
0

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

下一篇:Postgresql中的filter

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

jxdeng32642018-12-24 12:50:56

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

wanjuncode2018-12-14 10:31:34

这个就是 柔性数组吧?

评论热议
请登录后评论。

登录 注册