title: What does it mean to pass a &variable to a function? E.g., string& insert ( size_t pos1, const string& str );
body: <p>I understand passing a pointer, and returning a pointer:</p>
  
  <p><code>char * strcat ( char * destination, const char * source );</code></p>
  
  <p>You're passing a variable that contains the address to a char; returning the same.</p>
  
  <p>But what does it mean to pass something using the reference operator?  Or to return it?</p>
  
  <p><code>string&amp; insert ( size_t pos1, const string&amp; str );</code></p>
  
  <p>I mean, I understand what actually happens, I just don't understand the notation.  Why isn't the notation this instead: </p>
  
  <p><code>string * insert ( size_t pos1, const string * str ); //made up</code></p>
  
  <p>I presume it has something to do with passing/returning the instance of a class, but what?  Is this syntax valid; if not why not and if so what does it mean?</p>
  
  <p><code>char &amp; strcat ( char &amp; destination, const char &amp; source ); //made up</code></p>
  
  <p>(all of the function declarations, except the last made-up two, are from <a href="http://www.cplusplus.com" rel="nofollow noreferrer">http://www.cplusplus.com</a> )</p>