// swapexample.cpp

#include <iostream>
using namespace std;

// κλήση ως προς τιμή (call by value)
void swap1(int x, int y){
	int temp;
	temp = x;
	x = y;
	y = temp;
}

// κλήση ως προς αναφορά (call by reference, με δείκτες)
void swap2(int *px, int *py){
	int temp;
	temp = *px;
	*px = *py;
	*py = temp;
}

// κλήση ως προς αναφορά (call by reference, με διευθύνσεις/αναφορές)
void swap3(int &rx, int &ry){
	int temp;
	temp = rx;
	rx = ry;
	ry = temp;
}

int main ()
{
  int a = 10, b = 30;

  cout << "Καλώ την swap1(x,y): \n";
  swap1(a, b);
  cout << "a = " << a << " " << "b = " << b << "\n";

  cout << "Καλώ την swap2(x,y): \n";
  swap2(&a, &b);
  cout << "a = " << a << " " << "b = " << b << "\n";

  cout << "Καλώ την swap3(x,y): \n";
  swap3(a, b);
  cout << "a = " << a << " " << "b = " << b << "\n";
}