C语言实现动态可变长结构体

C语言实现动态可变长结构体

可使用此方法进行变长数据缓存,在FIFO,FILO等数据结构中可以用到

#define MEM_BUFF_SIZE(x)				(sizeof(Mem_t) + x*sizeof(char))

typedef struct tagMem{
	int val;
	char buff[0];
}Mem_t;

int main()
{
	Mem_t * myMem;

	myMem = (Mem_t *)malloc(MEM_BUFF_SIZE(100));
	myMem->val = 1234;
	myMem->buff[10] = 57;
	myMem->buff[99] = 124;

	printf("value:%d\nbuff[99]:%d\nbuff[10]:%d\n", myMem->val, myMem->buff[99], myMem->buff[10]);

	return 0;
}

输出:

value:1234
buff[99]:124
buff[10]:57

注意:变长缓冲区一个结构体只可有一个,并且必须在结构体最后

你可能感兴趣的:(C语言)