Introduction to Programming and C++

Contents Previous Topic Next Topic

New in C++ is the ability to pass-by-reference. Unfortunately, to denote this, the designers of C++ chose to overload another symbol which is already in use: the ampersand (&). If a variable name in a parameter list of a function is immediately preceeded by an &, then the body of the function will reference the actual passed parameter instead of making a copy. Inside the function, we simply refer to the parameter name and use it as if the & was not there. The only difference is that the original argument is changed as well. Program 1 shows how this works.

Program 1. Passing by value.

#include <iostream>

using namespace std;

void f( int & n ) {
	cout << "Inside f( int & ), the value of the parameter is " << n << endl;

	n += 37;            // we just refer to the paramter 'n'

	cout << "Inside f( int & ), the modified parameter is now " << n << endl;

	return;
}

int main() {
	int m = 612;

	cout << "The integer m = " << m << endl;

	cout << "Calling f( m )..." << endl;
	f( m );

	cout << "The integer m = " << m << endl; 

	return 0;
}

Questions

1. Try this with other types: double and char.

2. Write a function void abs( int & n ) which sets the integer pointed to by the argument to its absolute value.

3. Given the function in Question 2, call abs( 0 ). What will happen?

4. Comment on the wisdom of a function like

      int m = -5;
      abs( m );
      cout << "The value of m = " << m << endl;

modifying m without a visible assignment.

5. Write a function which takes references to two ints and swaps them if the first is greater than the second. (hint)


Contents Previous Topic Top Next Topic