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 等?
ps:制作俄罗斯方 block
最佳答案
这是定义由 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*
(但实际上您将拥有一个指向数据的指针,而不是数据的副本)。
关于c - 结构表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8016836/