C 语言定义不定长数组结构代码实例
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <stdlib.h>
// gcc arr.c
typedef struct subArrSt
{
int test;
}subArrSt;
typedef struct ArrSt
{
int num;
subArrSt sub[0];
}ArrSt;
int main()
{
//write data
uint32_t subArrNum = 5;
ArrSt *pSt = NULL;
subArrSt *pArr = NULL;
subArrSt sub;
int i = 0;
memset(&sub, 0, sizeof(sub));
pSt = (ArrSt *)malloc(sizeof(ArrSt) + sizeof(subArrSt)*subArrNum);
if (NULL == pSt)
{
return -1;
}
pSt->num = subArrNum;
pArr = (subArrSt *)pSt->sub;
for (i = 0; i < subArrNum && pArr; i++)
{
memset(&sub, 0, sizeof(sub));
sub.test = i * 10;
memcpy(pArr, &sub, sizeof(sub));
pArr++;
}
//read data
subArrSt *pArrRead = NULL;
pArrRead = pSt->sub;
int j = 0;
for (j = 0; j < pSt->num; j++)
{
printf("test=%d \n", pArrRead->test);
pArrRead++;
}
free(pSt);
pSt = NULL;
return 0;
}