初始化复合文字中的变量
Initialize Variable Inside Compound Literal
我对 C 还很陌生,只是偶然发现了复合文字,所以如果我的问题不准确,请纠正我。
我有一个结构;
typedef struct
{
int someVal;
} foo;
现在我明白了这可以用下面的方法初始化。
int main()
{
foo thisFoo = (foo) { .someVal = 2 };
}
我的问题是,我可以用 void 函数初始化 someVal
吗?
void init(int *f);
int main()
{
foo thisFoo = (foo) { init(.someVal) }; // error: expected expression before '.' token
}
void init(int *f)
{
*f = 2;
}
我已经设法在函数中初始化结构本身及其各自的成员,没有任何问题,但我很好奇这是否是一个替代(甚至合理)的选择?
不,你不能那样初始化。您可以在不初始化的情况下创建结构,然后使用成员的地址调用函数。
foo thisFoo;
init(&thisFoo.someVal);
我对 C 还很陌生,只是偶然发现了复合文字,所以如果我的问题不准确,请纠正我。
我有一个结构;
typedef struct
{
int someVal;
} foo;
现在我明白了这可以用下面的方法初始化。
int main()
{
foo thisFoo = (foo) { .someVal = 2 };
}
我的问题是,我可以用 void 函数初始化 someVal
吗?
void init(int *f);
int main()
{
foo thisFoo = (foo) { init(.someVal) }; // error: expected expression before '.' token
}
void init(int *f)
{
*f = 2;
}
我已经设法在函数中初始化结构本身及其各自的成员,没有任何问题,但我很好奇这是否是一个替代(甚至合理)的选择?
不,你不能那样初始化。您可以在不初始化的情况下创建结构,然后使用成员的地址调用函数。
foo thisFoo;
init(&thisFoo.someVal);