Несколько способов обмена значений переменных на классическом языке C.
Наиболее интересен способ обмена значений двух целочисленных
переменных без использования третьей вспомогательной переменной -
swap4() - развивает мозги.
#include <stdio.h>
void swap1(int a, int b)
{
int c = a;
a = b;
b = c;
}
void swap2(int &a, int &b)
{
int c = a;
a = b;
b = c;
}
void swap3(int *a, int *b)
{
int c = *a;
*a = *b;
*b = c;
}
void swap4(int &a, int &b)
{
a=a+b;
b=a-b;
a=a-b;
}
template <class T>
void swap5(T &a, T &b)
{
int c = a;
a = b; b = c;
}
int main()
{
int x = 10;
int y = 20;
printf("x=%d, y=%d\n",x,y);
swap1(x,y); // 10, 20
swap2(x,y); // 20, 10
swap3(&x,&y); // 10, 20
swap4(x,y); // 20, 10
swap5(x,y); // 10, 20
printf("x=%d, y=%d\n",x,y);
return 0;
}
Справочник алгоритмов v0.05 © 2007-2025 Igor Salnikov aka SunDoctor