Я использую структуру и хочу инициализировать максимум 10 портов. Тем не менее, когда программа работает, она может быть намного меньше, мы не знаем до времени выполнения. Однако это будет максимум. Я никогда раньше не делал struct, подобную этой, поскольку обычно я динамически распределяю, используя calloc и delcare, как this * ports в качестве типа значения.
Однако я не могу этого понять
*ports[MAX_PORTS]. Am I creating 10 pointers that point to port objects?
А
*ports = (struct port_t*) calloc(2, sizeof(*ports));
Похоже, я выделяю один указатель, который указывает на 2 объекта порта, размещенных в бесплатном хранилище?
Я не могу понять, почему я использую оператор точки с оператором стрелки?
порты [0] -> номер_порта = 20;
printf ("номер_порта:% d \ n", порты [0] -> номер_порта);
#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;
Большое спасибо за любые предложения,