Это нормальный способ определения структуры данных, которая состоит из таблицы из 6 t_coord
структур.(Если вы хотите 7 из них, измените [6]
на [7]
.)
Вы можете альтернативно определить typedef t_coord[6] a_piece;
.Но это иногда вызывает удивительное поведение, потому что массивы ведут себя особенно.Например, учитывая a_piece a1, a2;
, вы не можете написать назначение a1 = a2;
, тогда как вы можете назначить структуры (t_piece t1, t2; … t1 = t2;
).И массивы распадаются на указатели во многих обстоятельствах, в частности, вы не можете передать или вернуть массив из функции (хотя вы обычно передаете указатель в любом случае, учитывая размер структуры данных).Еще одна причина, по которой структуры для типов, которые должны оставаться непрозрачными, предпочтительнее в том, что они обеспечивают более строгую типизацию: если вы случайно попытаетесь присвоить t_piece
чему-то другому, компилятор будет жаловаться, тогда как компилятор с радостью позволит вам присвоить a_piece
к t_coord*
(но на самом деле у вас будет указатель на данные, а не их копия).