初始化复合文字内的变量

时间:2017-10-24 21:29:37

标签: c struct compound-literals

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

我有一个结构;

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; } 吗?

if not objItem.Complete Then

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

1 个答案:

答案 0 :(得分:0)

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

foo thisFoo;
init(&thisFoo.someVal);