#include <stdio.h>
#include <malloc.h>
typedef struct _soft_array
{
    int len;
    int array[];//int array[0];两种形式 
}SoftArray;

int main()
{  
    int i = 0;
    SoftArray* sa = (SoftArray*)malloc(sizeof(SoftArray) + sizeof(int) * 10);
    
    sa->len = 10;
    
    for(i=0; i<sa->len; i++)
    {
        sa->array[i] = i + 1;
    }
    
    for(i=0; i<sa->len; i++)
    {
        printf("%d\n", sa->array[i]);   
    }
    
    free(sa);
    
    return 0;
}

柔性数组是C99的扩展,简而言之就是一个在struct结构里的标识占位符(不占结构struct的空间)。

声明

typedef struct _soft_array
{
    int len;
    int array[];//int array[0];两种形式 
}SoftArray;

大小

可以用sizeof 看看其大小

printf("%d\n",sizeof(SoftArray));//CentOS5.6 32 下输出4