Как назначить целочисленный массив, объявленный внутри структуры напрямую? - PullRequest
0 голосов
/ 27 сентября 2018
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();
}

Поскольку структуры не поддерживают инициализацию, есть ли способ назначить массивы этого типа, объявленные внутри структуры, в одной строке кода, не используя функции выделения памяти и все ради простоты?Пожалуйста, придерживайтесь кода.

1 Ответ

0 голосов
/ 27 сентября 2018

После строки malloc вы можете написать:

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

При этом используется структурное назначение с составным литералом в качестве источника.

Кстати, я бы порекомендовал сделатьстрока malloc следующим образом: p[i] = malloc(sizeof *p[i]);, см. здесь для объяснения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...