例如,給定一個結構S:給定一個指向結構體的指針,我可以在一行中分配一個聚合初始化程序的結果嗎?
typedef struct {
int a, b;
} S;
...和這需要一個指向S
,一種方法我可以指定它的聚集體初始化的值都在一個行?這是我現有的解決方案,它使用一個臨時的:
void init_s(S* s) {
S temp = { 1, 2 };
*s = temp;
}
我正在使用C11。
對於非常罕見的超級學究誰不明白我的問題,因爲在某種程度上「聚合初始化」不會在這裏適用,因爲LHS沒有宣佈一個新的對象,我的意思是「聚集物與花括號和東西的初始化類似的語法「。
是:'* S =(S){1,2};'見C11 n1570,§6.5.2.5 *化合物文字*,第10段:例3:'drawline((struct point){。x = 1,.y = 1},(struct point){。x = 3,.y = 4});' –
@IwillnotexistIdonotexist - 它[作品](https://godbolt.org/g/SFhL3z),謝謝!足夠好的答案:) – BeeOnRope
'* s = ...'不是一個初始化程序。由於's'已經被聲明,你根本不能使用一個初始化器。上面的代碼不會**編譯。 – Olaf