Designated initializers are a syntax that allows for initializing an aggregate by naming its fields explicitly:
```
struct Point {
float x = 0.0;
float y = 0.0;
float z = 0.0;
};
Point p = {
.x = 1.0,
.y = 2.0,
// z will be 0.0
};
```
The explicitly listed fields will be initialized as specified, and others will be initialized in the same way they would be in a traditional aggregate initialization expression like Point{1.0, 2.0}. It requires that the designated initializers appear in the same order as the fields appear in the struct definition. So in the example above, it is legal to initialize x and then z, but not y and then x.