C++ what is the difference of type * and type *& in function : <p>I have two function signatures in C++</p>

<pre><code>void printArray(int* arrayPtr);
void printArray(int*&amp; arrayPtr);
</code></pre>

<p>I understand the 1st function. It says the function takes in a arrayPtr argument which is of type that's a pointer pointing to an integer. </p>

<p>Both function signature works, but I have a hard time understanding the 2nd signature(<code>*&amp;</code>) and what benefits it offers?</p>
