я следующий в моем файле заголовокмассива ЬурейеЙ структуры указателей
typedef struct tree_node* TreeNode;
struct tree_node{
int value;
void *data;
TreeNode parent;
TreeNode left;
TreeNode right;
};
Чтобы создать TreeNode я делаю следующее
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;
}
Теперь я хочу создать массив TreeNodes ... как бы я сделай это? я думал следующее
TreeNode *treeNodes;
treeNodes = malloc(26 * sizeof(TreeNode));
И затем
treeNodes[a_number_between_0_to_25] = createTreeNode(intNodeValue, NULL);
Заменить SizeOf (TreeNode *) для SizeOf (TreeNode), так как размер указателя не размер самой структуры – giorashc
'ЬурейеЙ структуры tree_node * TreeNode;' это не хорошая идея. Это скрывает тот факт, что 'TreeNode' на самом деле является указателем. Пусть 'TreeNode' является псевдонимом для' struct tree_node' и вместо этого использует 'TreeNode *'. – LihO
Вы действительно хотите массив TreeNodes (другими словами, указатели) или массив структур tree_node? – thejh