C 语言定义不定长数组结构

2022-10-24  本文已影响0人  江河湖海洋

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;
}


上一篇 下一篇

猜你喜欢

热点阅读