В составном литерале любые неопределенные члены инициализируются по умолчанию, как и список инициализаторов для объекта. Таким образом,
(struct s){ j++ })
эквивалентно
(struct s){ j++, 0 })
j++
- это старое значение j
до увеличения j
, как и в любом другом назначении. Таким образом, это установит p->i = 0
и j = 1
.
Вы можете получить доступ к элементам, используя разыменование указателя.
int x = p->x;
int i = p->i;