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

Rah*_*mar 0 c arrays structure initialization

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();
}
Run Code Online (Sandbox Code Playgroud)

由于结构不支持初始化,所以有没有办法在不使用mem分配函数的情况下在一行代码中分配在结构内声明的这种类型的数组,为了简单起见?请坚持代码.

M.M*_*M.M 5

在malloc行之后你可以写:

*p[i] = (struct data){'h', {1, 1, 1}};
Run Code Online (Sandbox Code Playgroud)

这使用了以复合文字作为源的结构赋值.

顺便说一下,我建议用这种方式做malloc线:p[i] = malloc(sizeof *p[i]);,请看这里的解释.

  • @RahulKumar注意到MM版本中的`*`,它在你的版本中缺失,这很重要. (2认同)