Remember, functions can return only ONE value. Until now it was impossible to change two different
non-array values within a function and return both values to main( ).
By Reference:
We can now swap two variables, by using the addresses of the variables from within the function.
When the function reverses the values, main( ) will also recognize the changes.
#include <iostream.h>
void swap(int &num1, int &num2);
int main(void)
{
int a=10,bj=20;
cout<< "Before the swap, a is " << a << " and
b is " << b << "."<< endl;
swap(a,b);
cout<< "After the swap, a is " << a << " and
b is " << b << "."<< endl;
return 0;
}
//-------------- Function to reverse two values ----------------------------------------
void swap(int &num1, int &num2)
// receiving addresses not values
{
int temp; // temporary holding variable
temp = num1;
num1 = num2;
num2 = temp;
return;
// main( )'s variables, not copies of them, have been changed
}
By Pointers:
Let's try this same swapping process using pointers instead of addresses.
#include <iostream.h>
void p_swap(int *pNum1, int *pNum2);
int main(void)
{
int a=10, b=20;
cout<< "Before the swap, a is " << a << " and b is " <<
b << "."<< endl;
p_swap(&a, &b); //pass the
addresses
cout<< "After the swap, a is " << a << " and b is " <<
b << "."<< endl;
return 0;
}
//-------------- Function to reverse two values
-----------------------------------------
void p_swap(int *pNum1, int *pNum2) // receiving
addresses not values
{
int temp; //
temporary holding variable
temp = *pNum1;
// swap the values stored at the addresses
*pNum1 = *pNum2;
*pNum2 = temp;
return; // main( )'s
variables, not copies of them, have been changed
}
|