Мое предложение - вставить struct x
в struct y
, вот так:
struct x{
int i;
int j;
} A[5];
struct y{
struct x x;
struct y * next;
} B[5];
Таким образом, его легко назначить, и структура памяти первых sizeof(struct x)
байтов обеих структур гарантированно будет одинаковой даже в C89.
Теперь вы можете сделать
B[0].x = A[0];
Поскольку struct x
гарантированно появляется в первом байте struct y
в памяти, вы все равно можете сделать
memcpy(&B[0], &A[0], sizeof A[0]);
Вы можете играть с этим макетом в http://codepad.org/2rCJA0cx