title: In C++/CLI, what does the hat character ^ do?
body: <p>I was reading Ivor Horton's Beginning Visual C++ 2008 and many of its CLR examples have this definition for main:</p>
  
  <pre><code>int main(array&lt;System::String ^&gt; ^args)
  </code></pre>
  
  <p>I went back, page by page, to the beginning of the book to find the first such instance with an explanation what it really means, but couldn't find one.</p>
  
  <p>Obviously it means the same as the standard <code>int main(int argc, char *argv[])</code>, but I'd like to know when and why that <code>^</code> is really used, and why it even exists (does it do something that pointers <code>*</code> and references <code>&amp;</code> cannot represent)?</p>