References have been invented to use pointer functionality in a safer way.
References are mostly used in function arguments, see section 4.1.
// g++ tst.cpp
#include <iostream>
using namespace std;
main()
{
int i = 5;
int j = 7;
int& j_ref = j;
fprintf( stdout,
" j_ref %d, &j_ref 0x%x, j %d, &j 0x%x \n", j_ref, &j_ref, j, &j);
//
// output: j_ref 7, &j_ref 0xbfabda14, j 7, &j 0xbfabda14
//
//
// the following statement does not change j_ref but the
// object (j) which it is pointing to
//
j_ref = i;
fprintf( stdout,
" j_ref %d, &j_ref 0x%x, j %d, &j 0x%x \n", j_ref, &j_ref, j, &j);
//
// output: j_ref 5, &j_ref 0xbfabda14, j 5, &j 0xbfabda14
//
}