美文网首页
C语言中的柔性数组

C语言中的柔性数组

作者: 沙卡拉卡轻食吧 | 来源:发表于2018-11-11 22:27 被阅读0次

C语言中 结构体末尾如果是定义的数组,那么这个数组只是一个标识符 并不占用结构体大小。

我们可以在结构体中定义一个length 和一个 int* array 让其成为一个柔性数组(可以动态指定大小的数组);

直接上代码

#include <stdio.h>

#include <malloc.h>

typedef struct SoftArray

{

    int size;

    int Array[];

}softarray;

softarray* createSoftArray(int len)

{

    softarray* array = (softarray*)malloc( sizeof(softarray) + sizeof(int)*len );

    array->size = len;

    return array;

}

int main()

{

    softarray* array = createSoftArray(10);

    int i = 0;

    for (i = 0; i < array->size; i++)

    {    

        array->Array[i] = i;

    }

    for (i = 0; i < array->size; i++)

    {

        printf("array->Array[i] = %d \n",array->Array[i]);

    }

    getchar();

    return 0;

}

相关文章

  • C语言中的柔性数组

    C语言中 结构体末尾如果是定义的数组,那么这个数组只是一个标识符 并不占用结构体大小。 我们可以在结构体中定义一个...

  • C语言中的不定长数组----柔性数组

    柔性数组不占用struct的空间, 而是额外分配的空间

  • 10_struct和union分析

    关键词:struct、结构体与柔性数组、union、小端模式和大端模式 1. struct的小秘密 C语言中str...

  • C++中的柔性数组

    描述 C99标准提供在结构体最后一个元素定义一个未知大小的数组,它就叫做柔性数组成员。 柔性数组的特点 定义柔性数...

  • C 实现链表的高速公路-跳跃表

    本文所需基础: 1.知道如何用c写链表。 2.下文将会教到的柔性数组。 预准备(柔性数组): 为了下文讲述方便,先...

  • 数据结构--单向链表

    C语言中,我们在使用数组时,会需要对数组进行插入和删除的操作,这时就需要移动大量的数组元素,但在C语言中,数组属于...

  • C语言- 字符、字符数组

    字符数组和字符串 C语言中没有字符串这种数据类型,C语言中通过char型数组来替代字符串的功能。C语言中的字符串一...

  • 零长度数组与柔性数组

    零长度数组(Zero-length array)与柔性数组(Flexible array) GNU C允许使用零长...

  • C柔性数组和变长数组

    变长数组 C语言在C99以前,数组的维度必须是整数常量表达式, 而C99则做了很大改进,允许数组维度为整形变量或者...

  • 指针数组和数组指针

    指针数组|存储指针的数组 在C语言和C++语言中,数组元素全为指针的数组称为指针数组。 例如:int *p[10]...

网友评论

      本文标题:C语言中的柔性数组

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