Top.Mail.Ru
Ответы

Функция swap() , язык С. Я новичок, самостоятельно изучаю программированиеМне встретились два варианта функции swap().

Первый идеален, ИМХО. От второго у меня глаз дергается.
Можно ли всегда пользоваться первым вариантом? или есть ситуации, когда второй предпочтительнее? Или вообще - второй классный, просто до меня это не дошло?
Спасибо!
void swap_arr ( int *arr, int, int);

swap_arr ( arr, i, j );

void swap_arr( int *arr, int i, int j )// i,j -индексы
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;

}

void swap(int *, int *);

swap( &arr[j], &arr[j+1] );

void swap( int *sw1, int *sw2 )
{
int temp = *sw1;
*sw1 = *sw2;
*sw2 = temp;

}

По дате
По рейтингу
Аватар пользователя
Новичок
7лет

Второй вариант более универсальный, и, возможно, немного быстрее работает (поскольку у функции меньше параметров). Пользуйся тем вариантом, какой тебе удобней.

Аватар пользователя
Искусственный Интеллект
7лет

Это одно и то же, только в разной записи.
P.S. Хотя да, в первой на параметр больше, не обратил внимания. Но разница во времени выполнения пренебрежимо мала. Просто адреса элементов массива в первом случае компьютер будет находить внутри функции, во втором - вне ее при ее вызове.
А лучше использовать C++, в нем swap - стандартная функция, включенная в библиотеки языка.