<p>void (int a[]) {
    a[5] = 3; // this is wrong?
    }</p>

<p>Can I do this so that the array that is passed in is modified?</p>

<p>Sorry for deleting, a bit new here...</p>

<p>I have another question which might answer my question:</p>

<p>If I have</p>

<pre><code>void Test(int a) {
}

void Best(int &amp;a) {
}
</code></pre>

<p>are these two statements equivalent?</p>

<pre><code>Test(a);
Best(&amp;a);
</code></pre>

If you get the variable not by reference and not by pointer, it means that the function is essentially isolated, getting an ad-hoc copy of a. No matter what you do (without trying to hack the stack or things like that) you wouldn't have access to that value in the calling context.
If you know something about the calling context, you may be able to do things based on some anticipation of stack contents, but it's generally a bad idea.
If your method takes a[] which is essentially a*, then yes, you can alter the contents of the cell that a points to, but you won't be able to alter a (the pointer) itself to point at something else.