Во-первых, это неправильно, ему нужно пространство между NODEALLOC
и (
Во-вторых, это зло. хорошо подходит для макросов;это не один из них.
Вот как это работает:
Это простая замена строк, поэтому, когда вы видите root=NODEALLOC;
, она становится root=(struct treenode*)malloc(sizeof(struct treenode))
malloc(n)
выделяет n байтов памяти, sizeof
сообщает malloc, насколько большим должен быть n
, а (struct treenode*)
преобразует возвращенные malloc void*
в правильный тип.