C语言中的柔性数组

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;

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容