It's very similar to int ** -- a pointer to a pointer. That allows a function to change a pointer declared in the calling function. For example: linked list. When the pointer to the head of a linked list is declared in main() the pointer has to be passed by reference to a function that is going to insert a new node either at the head of the linked list or somewhere else within it.
struct link *next;
struct link* Insert(struct link*& head)
struct link* newnode = new struct link;
head = link; // add a new node to the head of the list
struct link* head = 0;