请看下面的代码。
enum type {CONS, ATOM, FUNC, LAMBDA};
typedef struct{
enum type type;
} object;
typedef struct {
enum type type;
object *car;
object *cdr;
} cons_object;
object *cons (object *first, object *second) {
cons_object *ptr = (cons_object *) malloc (sizeof (cons_object));
ptr->type = CONS;
ptr->car = first;
ptr->cdr = second;
return (object *) ptr;
}
在cons
函数中,变量ptr
的类型为cons_object*
。但在返回值中,它被转换为object*
类型。
- 我想知道这是怎么可能的,因为
cons_object
和object
是不同的结构体。 - 这样做是否存在任何问题?
有什么想法!