C:通过指针设置结构的数组成员

bre*_*sus 1 c struct

我有一个数组作为成员的结构,我试图使用箭头语法设置该数组.是)我有的:

typedef float Foo[3];
typedef struct {
  Foo foo;
} Bar;

Bar* f() {
  Bar* bar = malloc(sizeof(Bar));
  bar->foo = {1.0, 1.0, 1.0};

  return bar;
}
Run Code Online (Sandbox Code Playgroud)

gcc说:

error: expected expression before '{' token
Run Code Online (Sandbox Code Playgroud)

在线上 bar->foo = {1.0, 1.0, 1.0};

我不知道为什么这不起作用.提前致谢.

dre*_*lax 5

C99允许它通过复合文字:

Bar* f()
{
   Bar* bar = malloc(sizeof(Bar));

   if (bar)
       *bar = (Bar){{1.0, 1.0, 1.0}};

   return bar;
}
Run Code Online (Sandbox Code Playgroud)

"外部"curlies将结构封装为一个整体(如果struct具有其他成员,则将它们列在外部curlies中),"inner"curlies用于数组.

  • 不,因为`=`没有为数组类型定义,但它是为结构类型定义的(即使是包含数组的结构).有关分配的更多信息,请参见§6.5.16.1. (2认同)