c malloc a struct从其类型中



给定以下结构

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_t之前的预期表达式
foo_t var = malloc(sizeof(((**_ foo_t)));

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

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

foo_t var = malloc(sizeof *var);

var不是类型,因此*var是有效的表达式。

您必须为带有type foo_t的变量而不是size sizeof(*foo_t)的变量,将大小 size> sizeof(struct foo)的内存的一部分分配。使用函数malloc,您将指向指向的部分内存(确定输入大小)的部分(确定输入大小)。您的变量 var 是type foo_t,即,指向 struct fooo 结构的指针。因此,用于变量 var 的正确语法是:

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

相关内容

最新更新