J'ai une petite affectation en C. J'essaie de créer un tableau de pointeurs vers une structure. Ma question est comment puis-je initialiser chaque pointeur sur NULL? En outre, après avoir alloué de la mémoire pour un membre du tableau, je ne peux pas affecter de valeurs à la structure à laquelle pointe l'élément de tableau.Comment puis-je déclarer et initialiser un tableau de pointeurs sur une structure en C?
#include <stdio.h>
#include <stdlib.h>
typedef struct list_node list_node_t;
struct list_node
{
char *key;
int value;
list_node_t *next;
};
int main()
{
list_node_t *ptr = (list_node_t*) malloc(sizeof(list_node_t));
ptr->key = "Hello There";
ptr->value = 1;
ptr->next = NULL;
// Above works fine
// Below is erroneous
list_node_t **array[10] = {NULL};
*array[0] = (list_node_t*) malloc(sizeof(list_node_t));
array[0]->key = "Hello world!"; //request for member ‘key’ in something not a structure or union
array[0]->value = 22; //request for member ‘value’ in something not a structure or union
array[0]->next = NULL; //request for member ‘next’ in something not a structure or union
// Do something with the data at hand
// Deallocate memory using function free
return 0;
}
C'est une bonne réponse, sauf que 'array' n'est pas ** ** ** vraiment un pointeur vers un pointeur. 'array 'est vraiment un tableau, pas un pointeur de quelque sorte que ce soit. Les types de tableau utilisés dans une expression sont évalués en pointant vers le premier élément du tableau, mais un tableau est toujours un type réel, distinct des pointeurs. 'sizeof array' devrait vous convaincre que' array' n'est pas un pointeur. – caf
au lieu de 'array [0] = (list_node_t *) malloc (sizeof (liste_node_t));' ce devrait être 'array [0] = malloc (sizeof (list_node_t));' Ne pas typer les appels malloc. –