美文网首页
C 语言定义不定长数组结构

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

作者: 江河湖海洋 | 来源:发表于2022-10-24 13:40 被阅读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;
}


相关文章

  • C语言数组

    数组的定义 在C语言中支持数组这种数据结构,其是存储具有固定长度的相同元素类型的顺序集合. 数组的声明 类型说明符...

  • golang入门到放弃:3.数组、切片、map

    数组 切片 数组和切片的区别 数组必须要指定长度,如果定义时不指定长度,go语言也会根据元素中的个数自动设置值数组...

  • scala-数组与元组

    数组与元组 数组定义 数组几乎是所有语言中最基础的数据结构,数组可索引、类型一致、长度不变 Scala数组分为定长...

  • C语言 13 结构体数组

    C语言 13 结构体数组 结构体数组的定义 结构体数组初始化 结构体成员的使用 格式 : 字符串成员的处理 结构体...

  • C语言21 指针数组与数组指针

    C语言21 指针数组与数组指针 指针数组的定义 指针数组的赋值 结构体指针数组 分析下面的代码 数组指针的定义 数...

  • Scala的数组操作

    数组在任何语言里面都是很基本、很重要的一个数据结构,在Scala中也是如此。数组的定义:1,定长数组: 2,变长数...

  • C语言和OC的结构体(struct)

    Struct(结构体) 1.结构体定义 2.结构体变量 3.结构体数组 4.C语言结构体指针 5.C语言共用体 6...

  • Python列表解析与输入列表

    在静态语言中比如C语言,定义一个数组可以是: 这个数组是给定长度的。在Python中: 这个样子就创建了一个含有1...

  • STL学习笔记(一)

    不定长数组:vector 定义 vector是一个线性顺序结构。相当于数组,但其大小可以不预先指定,并且自动扩展。...

  • 数组维界基址和数组映像函数常量基址

    在数据结构 C语言版中, 对数组有这样的定义:typedef struct { ElemType *base; /...

网友评论

      本文标题:C 语言定义不定长数组结构

      本文链接:https://www.haomeiwen.com/subject/nmonzrtx.html