[英]Initialize Variable Inside Compound Literal
我是C語言的新手,只是偶然接觸了Composite Literals,所以如果我的問題不正確,請更正我。
我有一個結構;
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.