Поскольку функция «swap» принимает параметры в качестве передаваемых по значению, копии переменных передаются в функцию «swap», которая будет заменять только свои локальные переменные «a» и «b» (переданные в качестве параметра), а не статические. перешел с основного.
Обмен должен принимать параметры в качестве ссылок, как показано ниже.
#include <iostream>
void swap(int&, int&);
int main()
{
static int a = 1;
static int b = 2;
swap(a, b);
std::cout << "a = " << a << std::endl << "b = " << b << std::endl;
std::cin.get();
}
void swap(int &a,int &b)
{
int temp = a;
a = b;
b = temp;
std::cout << "a = " << a << std::endl << "b = " << b << std::endl;
}
Обратите внимание, что статическая переменная, определенная в функции, относится к ее значению при последующих вызовах функции, в которой она объявлена.