Например, как я могу перенести 1-й, 5-й и 10-й элементы в массив A в новый массив из трех элементов, не назначая отдельно три раза?
В C просто объявите и инициализируйте новый массив с выбранными элементами вашего массива. Нет необходимости в назначении.
int main(void)
{
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int b[3] = {a[0], a[4], a[9]};
return 0;
}
Помните, что инициализаторы для массивов с автоматическим временем хранения не обязательно должны быть константами.
Просто выполните три задания! Почему вы избегаете этого?
int ar1[10], ar2[10];
ar2[0] = ar1[0];
ar2[4] = ar1[4];
ar2[9] = ar1[9];
Однако, если у вас есть много индексов для перемещения, возможно, вам нужен другой способ.
Я предлагаю следующее:
int ar1[1000], ar2[1000];
int indices[] = { 1, 3, 54, 6, 23, 35, 9, 42, 44, 995, 722, .... };
for (int i = 0; i < sizeof(indices) / sizeof(indices[0]); i++)
{
ar2[i] = ar1[i];
}
memmove()
(илиmemcpy()
) не считается назначением, тогда я полагаю, вы могли бы использовать это вместо этого. (Также для дальнейшего использования используйте один из тегов C или C ++, но не оба. Очень часто ответ зависит от того, какой язык вы используете, и ответ в C ++ может радикально отличаться от ответа в C.)