Lanciare un puntatore struct su un altro – C

Si prega di considerare il seguente codice.

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; } 

Nella funzione cons , la variabile ptr è di tipo cons_object* . Ma nel valore di ritorno viene convertito in tipo di object* .

  1. Mi chiedo come sia ansible perché cons_object e object sono diverse strutture.
  2. Ci sono problemi nel fare cose come questa?

Qualche idea!