Так у меня есть структура выглядит следующим образом:массив структур указателей как первый элемент структуры
typedef struct tree tree;
struct tree {
tree* child[10];
int value;
};
и функцию, чтобы добавить ребенка и вернуть его адрес следующим образом:
tree* tree_add_child(tree* parent, int index)
{
tree* p = *(parent->child + index);
if (p == NULL)
{
p = tree_new_tree(); //malloc new tree - init it - return its address
*(parent->child + index) = p;
}
return p;
}
Он работает как я хочу, чтобы он был так, как есть. Но я бы хотел заменить все parent->child
s на parent
, так как они указывают на тот же адрес, и я чувствую, что дополнительный доступ к памяти не нужен. Но когда я это делаю, у меня появляется ошибка, которую я пытаюсь назначить tree
tree*
.
Как я могу это сделать, и есть ли какие-либо другие оптимизации, которые я мог бы сделать, чтобы сделать этот запуск быстрее?
Ведущее * не надо там, потому что я ожидал бы родитель уже быть заостренный. Вы не хотите разыскивать свой контент, вы хотите указать p на адрес в parent + index. –