Вы можете использовать memcpy
, как показано в другом ответе, или скопировать всю структуру, как показано в другом ответе (хотя в вашем вопросе говорится, что вы просто хотите установить массив, а не остаток структуры).
Другой вариант - встроить только массив в другую структуру:
typedef struct {
int elem[5];
} RotArr;
typedef struct {
RotArr arr;
int number;
} Rot;
Затем вы можете получить доступ к элементу i
массива в Rot RA
как RA.arr.elem[i]
. Также вы можете присвоить значения всему объекту RotArr
. Остальная часть вашего кода может выглядеть примерно так:
Rot RA;
void config(void)
{
RA.arr = (RotArr){{1, 2, 3, 4, 5}};
RotArr arr;
int i;
for (i = 0; i < 5; i++)
{
arr.elem[i] = i + 1;
}
RA.arr = arr;
}
Обратите внимание, что (RotArr){{1, 2, 3, 4, 5}}
представляет собой составной литерал значение типа RotArr
. Это также может быть записано как (RotArr){ .elem = {1, 2, 3, 4, 5} }
или (RotArr){ .elem = { [0] = 1, [1] = 2, [2] = 3, [3] = 4, [4] = 5 } }
, чтобы было абсолютно ясно, какие части составного литерала устанавливаются явно (все остальные части будут установлены в 0), но, поскольку он имеет только один член, эти формы составное литеральное значение немного чрезмерно.