0

我对C相当陌生,只是偶然发现了复合文字,所以如果我的问题不准确,请纠正我。

我有一个结构;

typedef struct
{
  int someVal;
} foo;

现在我明白这可以用以下初始化。

int main()
{
  foo thisFoo = (foo) { .someVal = 2 };
}

我的问题是,我可以someVal使用 void 函数进行初始化吗?

void init(int *f);

int main()
{
  foo thisFoo = (foo) { init(.someVal) }; // error: expected expression before '.' token
}

void init(int *f)
{
  *f = 2;
}

我已经设法在一个函数中初始化结构本身及其各自的成员而没有任何问题,但是很好奇这是否是一种替代(甚至是合理的)选择?

4

1 回答 1

0

不,你不能那样初始化。您可以在不初始化的情况下创建结构,然后使用成员的地址调用函数。

foo thisFoo;
init(&thisFoo.someVal);
于 2017-10-24T21:34:01.870 回答