簡體   English   中英

在復合文字內部初始化變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM