Code #include <iostream> #include <locale.h>
void obmen1(int x, int y) //Прямая передача { int temp; temp = x; std::cout << "temp = " << temp << std::endl; x = y; std::cout << "x = " << x << std::endl; y = temp; std::cout << "y = " << y << std::endl; } void obmen2(int *x, int *y)// Передача параметра по ссылке { int temp; temp = *x; *x = *y; *y = temp; } void obmen3(int& x, int& y)//Передача параметра по адресу { int temp; temp = x; x = y; y = temp; }
void main() { int a = 2, b = 5; setlocale (LC_ALL,"rus"); using std::cout; using std::endl; cout << "До обмена: a = " << a << ", b = " << b << endl; obmen1(a,b); cout << "После обмена 1: a = " << a << ", b = " << b << endl; obmen2(&a,&b); cout << "После обмена 2: a = " << a << ", b = " << b << endl; obmen3(a,b); cout << "После обмена 3: a = " << a << ", b = " << b << endl; system("pause"); } Эта программа иллюстрирует, каким образом можно передать значения переменной в функцию и произвести над ней определённые действия. Опытным путём определено, что функция не может поменять значения переменных напрямую. Внутри функции обмен проходит нормально, но входящие значения не меняются на выходе. При работе с переменной на уровне адресов, обмен происходит, даже внутри функции.
|