相关疑难解决方法(0)

将一个结构指针转换为另一个 - C

请考虑以下代码.

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;
}
Run Code Online (Sandbox Code Playgroud)

cons函数中,变量ptr是类型cons_object*.但是在返回值中它被转换为类型object*.

  1. 我想知道这是怎么可能的,因为cons_objectobject是不同的结构.
  2. 做这样的事情有什么问题吗?

有什么想法吗!

c struct casting

27
推荐指数
3
解决办法
2万
查看次数

标签 统计

c ×1

casting ×1

struct ×1