Вот две структуры, которые я использую. Я не уверен, как инициализировать так, чтобы член структуры указывал на структуру. Я не уверен, возможно ли это или нет.Указательный элемент структуры для самой структуры в C
typedef struct __node
{
int value;
struct __node* left;
struct __node* right;
}setNode;
typedef struct __set {
setNode* root;
//mutex for this set (To be implemented)
}set;
Я хочу, чтобы инициализировать члены набора, но не знаю, как я должен сделать, чтобы получить result->root
, чтобы указать на тот же адрес, что и set result
.
set* new_set()
{
set* result = malloc(sizeof(set));
result -> root = NULL; // Not sure???
}
Я хочу получить указатель на корень.
void someOther(set* s)
{
setNode* temp = s -> root;
//....
}
Извините, если вопрос слишком расплывчатый.
Additional Info
Я хочу два структур. Тот, который содержит узлы дерева [setNode] и второй структуры, который содержит указатель на корень дерева и некоторые другие члены (например, мьютекс для этого дерева) [set]. Это не проблема.
Проблема: В функции у меня есть setNode* temp = someSet -> root;
, так что я должен иметь возможность перемещаться по дереву. I.e temp должен указывать на корень someSet. Итак, что я должен назначить result -> root
в функции new_set?
'__node' является UB, поскольку он содержит два последовательных символа подчеркивания. Не делай этого. – Bathsheba
@ Bathsheba Not UB, но такие имена зарезервированы. –
Вопрос не зависит от макета ... –