Я использую структуру и хочу инициализировать максимум 10 портов. Однако, когда программа работает, это может быть намного меньше, мы не знаем этого до времени выполнения. Однако это будет макс. Я никогда раньше не создавал такую структуру, так как обычно динамически выделяю память с помощью calloc и delcare, например, *ports в качестве типа значения.
Однако я не могу этого понять
*ports[MAX_PORTS]. Am I creating 10 pointers that point to port objects?
А также
*ports = (struct port_t*) calloc(2, sizeof(*ports));
Похоже, я выделяю один указатель, который указывает на 2 объекта порта, выделенные в свободном хранилище?
Я не могу понять, почему я использую оператор точки со стрелкой? порты[0]->port_id = 20; printf("port_id: %d\n", ports[0]->port_id);
#include <stdio.h>
#include <stdlib.h>
#define MAX_PORTS 10
struct port_t
{
int port_id;
char name;
} *ports[MAX_PORTS];
int main(void)
{
*ports = (struct port_t*) calloc(2, sizeof(*ports));
ports[0]->port_id = 20;
printf("port_id: %d\n", ports[0]->port_id);
return 0;
}
обычно то, что я сделал в прошлом, это:
struct port_t
{
int port_id;
char name;
} *ports;
ports = (struct port_t*) calloc(2, sizeof(*ports));
А затем назначьте одно из следующих ниже. Однако предыдущий программист объявил все так же, как я показал вверху, поэтому я не могу ничего изменить.
ports[0].port_id = 10;
ports->port_id = 10;
Большое спасибо за любые предложения,