void exchange(int, int);
int main
{
int a=5,b=7;
exchange(a,b);
}
void exchange (int x, int y)
{
int temp;
temp = x;
x = y;
y = temp;
return;
} // end exchange
In the above code, you are passing by value.
This means that x and y are a copy of the arguments sent to
this function. Instead, you want to use pass by reference,
so that x and y refer to the same memory location as the
arguments and thus, modify the contents at that address.
To pass by reference, you can change the function header
to the following:
void exchange (int& x, int& y)
#include<iostream>
using namespace std;
void ClearPtr(int *&p);
void ClearPtr2(int *p2);
int main()
{
int x=5, x2=6;
int *pointer, *pointer2;
pointer=&x;
pointer2=&x2;
cout << "x is: " << *pointer << endl;
cout << "pointer is holding address: " << pointer << endl;
cout << endl;
cout << "x2 is: " << *pointer2 << endl;
cout << "pointer2 is holding address: " << pointer2 << endl;
cout << endl;
ClearPtr(pointer);
ClearPtr2(pointer2);
cout <<"pointer is holding address: " << pointer << endl;
cout <<"pointer2 is holding address: " << pointer2 << endl;
return 0;
}
void ClearPtr(int *& p)
{
p=0;
}
void ClearPtr2(int *p2)
{
p2=0;
}
Try running this code.
The thing to remember about pass by reference is if you modify the value p, it will be remembered in "main".
Back to Exercise click here