J'utilise une structure et je veux initialiser un maximum de 10 ports. Cependant, lorsque le programme est en cours d'exécution, il peut être beaucoup moins, nous ne savons pas avant l'exécution. Cependant, ce sera le maximum. Je n'ai jamais fait de struct comme ça avant, car normalement j'alloue dynamiquement en utilisant calloc et delcare comme ce * ports comme type de valeur.struct c allouer dynamiquement de la mémoire
Cependant, je ne comprends pas ce
*ports[MAX_PORTS]. Am I creating 10 pointers that point to port objects?
Et
*ports = (struct port_t*) calloc(2, sizeof(*ports));
On dirait que je suis un seul pointeur allouons qui pointe vers 2 objets ports attribués au magasin libre?
Je n'arrive pas à comprendre pourquoi j'utilise un opérateur de point avec un opérateur de flèche? ports [0] -> port_id = 20; Printf ("port_id:% d \ n", ports [0] -> id_port)
#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;
}
normalement, ce que je l'ai fait dans le passé est la suivante:
struct port_t
{
int port_id;
char name;
} *ports;
ports = (struct port_t*) calloc(2, sizeof(*ports));
Et puis attribuez-lui avec une des conditions suivantes ci-dessous. Cependant, le programmeur précédent a déclaré tout ce que j'ai affiché en haut, donc je ne peux rien changer.
ports[0].port_id = 10;
ports->port_id = 10;
Un grand merci pour toutes les suggestions,
C99 gcc compilier – ant2009