如何直接分配在结构内部声明的整数数组?

时间:2018-09-27 06:32:52

标签: c arrays initialization structure

struct data
{
    char name;
    int conn[3];
};

typedef struct data unit;
typedef unit *link;

int main()
{
    int i;
    link p[100];
    for(i=0;i<=100;i++)
    {
        p[i]=(link)malloc(sizeof(unit));
        p[i]->name='h';
        p[i]->conn[]=(int*){"1","1","1"};   **// assignment error**
    }
    for(i=0;i<=100;i++)
    {
        printf("%c\t%d\t%d\t%d\n",p[i]->name,p[i]->conn[0],p[i]->conn[1],p[i]->conn[2]); 
    }
    getch();
}

由于结构不支持初始化,因此,是否有任何方法可以在一行代码中分配在结构内部声明的这种类型的数组,而无需使用mem分配函数,并且为了简单起见,所有方法都不用吗? 请遵守代码。

1 个答案:

答案 0 :(得分:5)

在malloc行之后,您可以编写:

*p[i] = (struct data){'h', {1, 1, 1}};

这使用带有compound literal作为源的结构分配。

顺便说一句,我建议这样进行malloc行:p[i] = malloc(sizeof *p[i]);see here进行解释。