代码之家  ›  专栏  ›  技术社区  ›  Romeortec

C malloc从其typedef生成结构

  •  1
  • Romeortec  · 技术社区  · 7 年前

    给定以下结构

    struct foo
    {
      int b;
      int a;
      int r;
    };
    

    typedef struct foo * foo_t;
    

    也就是说 foo_t 应该等于 struct foo
    所以 struct foo *var; <=&燃气轮机; foo_t var;

    foo_t var = malloc(sizeof(*foo_t)); 在编译时引发错误

    错误:之前应为表达式
    foo\u t var=malloc(sizeof(( foo\u t));

    2 回复  |  直到 7 年前
        1
  •  8
  •   melpomene    7 年前

    因为 sizeof 的操作数必须是表达式或带括号的类型名。 *foo_t

    我强烈建议不要在typedef后面隐藏指针。但是,您可以执行以下操作:

    foo_t var = malloc(sizeof *var);
    

    var *var 是有效表达式。

        2
  •  0
  •   user7185778 user7185778    7 年前

    您必须分配一部分大小的内存 风险值 是foo\u t类型,即指向 结构foo 结构 因此,变量分配的正确语法 风险值 是:

    foo_t var=malloc(sizeof(struct foo));