#include using namespace std; // void means no "return" statement; // both parameters are pass-by-reference void f( int & x, int & z ) { z = x * x; // changes b in main() to 16 x++; // adds 1 to b in main() ==> 17 } //int g( int x, int z ) // <== pass-by-value version //int g( int & x, int z ) // <== version "two" //int g( int x, int & z ) // <== version "three" int g( int & x, int & z ) // <== pass-by-reference version { x = z + 1; z = x + 2; return ( x + z ); } int main() { int a = 2, b = 4, c = 6; f( b, b ); cout << a << " and " << b << " and " << c << endl; // OUTPUT: 2 and 17 and 6 c = g( a, b ); cout << a << " and " << b << " and " << c << endl; // OUTPUT: 18 and 20 and 38 <== pass-by-reference // OUTPUT: 2 and 20 and 38 <== version "three" // OUTPUT: 18 and 17 and 38 <== version "two" // OUTPUT: 2 and 17 and 38 // <== pass-by-value return 0; }