c/language/compound literal

Constructs an unnamed object of specified type (which may be struct, union, or even array type) in-place.

Syntax
where

Explanation
The compound literal expression constructs an unnamed object of the type specified by and initializes it as specified by. Designated initializers are accepted.

The type of the compound literal is (except when  is an array of unknown size; its size is deduced from the  as in ).

The value category of a compound literal is (its address can be taken).