J'ai suivant dans mon fichier d'en-têtetableau de pointeurs struct typedef
typedef struct tree_node* TreeNode;
struct tree_node{
int value;
void *data;
TreeNode parent;
TreeNode left;
TreeNode right;
};
Pour créer un treenode que je fais suit
TreeNode createTreeNode(int value, void *data){
TreeNode node;
node = malloc(sizeof(TreeNode*));
if(node == NULL){
printf("TreeNode malloc failed!!\n");
exit(EXIT_FAILURE);
}
node->data = data;
node->value = value;
node->parent = NULL;
node->right = NULL;
node->left = NULL;
return node;
}
Maintenant, je veux créer une matrice de TreeNodes ... comment pourrais-je fais le? Je pensais suivant
TreeNode *treeNodes;
treeNodes = malloc(26 * sizeof(TreeNode));
Et puis
treeNodes[a_number_between_0_to_25] = createTreeNode(intNodeValue, NULL);
Remplacer sizeof (TreeNode *) sizeof (TreeNode) puisque la taille d'un pointeur n'est pas la taille de la structure elle-même – giorashc
'typedef struct tree_node * TreeNode;' ce n'est pas une bonne idée. Il cache le fait que 'TreeNode' est en fait un pointeur. Soit 'TreeNode' un alias pour' struct tree_node' et utilise 'TreeNode *' à la place. – LihO
Voulez-vous vraiment un tableau de TreeNodes (en d'autres termes, des pointeurs) ou un tableau de structs tree_node? – thejh