Ich benutze eine Struktur und ich möchte maximal 10 Ports initialisieren. Wenn das Programm ausgeführt wird, kann es jedoch viel weniger sein, wir wissen es erst zur Laufzeit. Dies wird jedoch die max. Ich habe struct nie zuvor so gemacht, wie ich normalerweise dynamisch unter Verwendung von Calloc und Delcare wie diese * Ports als Werttyp zuteile.struct c dynamisch Speicher zuweisen
Aber ich kann nicht verstehen, diese
*ports[MAX_PORTS]. Am I creating 10 pointers that point to port objects?
Und
*ports = (struct port_t*) calloc(2, sizeof(*ports));
Sieht aus wie ich einen einzelnen Zeiger bin Zuteilung, die auf dem freien Speicher zugeordnet 2-Port-Objekte verweist?
Ich kann nicht verstehen, warum ich einen Punktoperator mit einem Pfeiloperator verwende? Ports [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;
}
normalerweise das, was ich in den vergangen getan haben, ist dies:
struct port_t
{
int port_id;
char name;
} *ports;
ports = (struct port_t*) calloc(2, sizeof(*ports));
Und dann mit einem der unten folgenden zuweisen. Der vorherige Programmierer hat jedoch alles, was ich oben angezeigt habe, deklariert, so dass ich nichts ändern kann.
ports[0].port_id = 10;
ports->port_id = 10;
Vielen Dank für Ihre Anregungen,
Kompilier gcc C99 – ant2009