En C, lorsque vous définissez une structure. Quelle est la bonne façon de créer une nouvelle instance? J'ai vu deux façons:
struct listitem {
int val;
char * def;
struct listitem * next;
};
La première façon (xCode dit que cela redéfinit la structure et mal):
struct listitem* newItem = malloc(sizeof(struct listitem));
La deuxième façon:
listitem* newItem = malloc(sizeof(listitem));
Sinon, existe-t-il une autre façon?
La deuxième façon ne fonctionne que si vous avez utilisé
typedef struct listitem listitem;
avant toute déclaration d'une variable de type listitem
. Vous pouvez également simplement allouer statiquement la structure plutôt que l'allouer dynamiquement:
struct listitem newItem;
La façon dont vous avez démontré est comme faire ce qui suit pour chaque int
que vous voulez créer:
int *myInt = malloc(sizeof(int));
Cela dépend si vous voulez un pointeur ou non.
Il vaut mieux appeler votre structure comme ceci:
Typedef struct s_data
{
int a;
char *b;
etc..
} t_data;
Après l'instancier pour une structure sans pointeur:
t_data my_struct;
my_struct.a = 8;
Et si vous voulez un pointeur, vous devez le malloc comme ça:
t_data *my_struct;
my_struct = malloc(sizeof(t_data));
my_struct->a = 8
J'espère que cette réponse à votre question
struct listitem newItem; // Automatic allocation
newItem.val = 5;
Voici un bref aperçu des structures: http://www.cs.usfca.edu/~wolber/SoftwareDev/C/CStructs.htm