//dostuff.cpp
//Illustrates the difference between a call-by-value
//parameter and a call-by-reference parameter.

#include <iostream>

using namespace std;

void doStuff(int par1Value, int& par2Ref);            //Function Declaration
//par1Value is a call-by-value formal parameter and
//par2Ref is a call-by-reference formal parameter.



int main( )
{
    int n1, n2;
    n1 = 1;
    n2 = 2;

    doStuff(n1, n2);                                                 //Function Call - void return means nothing to catch

    cout << "n1 after function call = " << n1 << endl;
    cout << "n2 after function call = " << n2 << endl;

    return 0;
}



void doStuff(int par1Value, int& par2Ref)         //Function Definition: Head
{
    par1Value = 111;                                            //Function Definition: Body is part between {}
    cout << "par1Value in function call = "
           << par1Value << endl;

    par2Ref = 222;
    cout << "par2Ref in function call = "
           << par2Ref << endl;
}