Рассмотрим тип объединения ниже.
typedef union nodeTypeTag {
nodeEnum nodeType;
ruleNode rule;
conNode cond;
actNode act;
exprNode expr;
litNode lit;
} ASTnode;
, в котором nodeEnum
- это enum, а ruleNode
, conNode
, actNode
, exprNode
, litNode
- все типы структур.
Теперь предположим, что в моей основной функции я делаю это:
ASTnode * tmp;
tmp = (ASTnode *) malloc(sizeof(ASTnode));
и предполагаю, что у меня есть другая функция, которая принимает параметры:
myfun(conNode * conditions)
Что произойдет, если япередать tmp
этой функции?Это даст ошибку?Зачем?Будет ли это неявно изменить тип указателя?Я новичок в идее объединения типов.
Спасибо