Таблица структур - PullRequest
       8

Таблица структур

2 голосов
/ 05 ноября 2011
typedef struct s_coord
{
    int     ax;
    int     ay;
    int     bx;
    int     by;
    int     cx;
    int     cy;
    int     dx;
    int     dy;
} t_coord;

typedef struct s_piece
{
    t_coord piece[6];
} t_piece;

Мне было интересно, был ли это правильный способ создания таблицы из 7 структур?

И как я могу установить ax, ay и т. Д. Для каждой таблицы?

пс: изготовление тетриса.

Ответы [ 2 ]

1 голос
/ 05 ноября 2011

Это нормальный способ определения структуры данных, которая состоит из таблицы из 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* (но на самом деле у вас будет указатель на данные, а не их копия).

0 голосов
/ 07 февраля 2017

если вы хотите 7, вам нужно

typedef struct s_piece
{
    t_coord piece[7];
} t_piece;

они обозначены как piece[0] до piece[6] (компьютеры нумеруют от 0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...