Well, to your comment of not understanding, think of a reference as being similar to a pointer. When someone talks of a reference's synonym, he or she is talking about what the reference refers to. If you think of it like a pointer, a synonym is like what the pointer is pointing to.

But, references are NOT pointers. A reference is a construction that makes it easier to modify variables in a function that are not local to the function. If you ever worked with C, I'm sure you came across this, but if not, I'll lay it out for you. It's pointless, but let's say you were trying to write a function that adds one to a variable and returns nothing. In C, you would do this...
Code:
void increment(int* value)
 {
  *value += 1;
 }
This way, the variable you send to the function would be incremented, but you'd always have to remember to slap an address label (&) onto the variable when you passed it to the function. In C++, you would use a reference.
Code:
void increment(int& value)
 {
  value += 1;
 }
You cannot operate on a reference. A reference is designed to be a 'middle man' for operations that are to be performed on another variable.

So, to your question about whether you would get the same errors, not really. You can have an array of pointers passed to a function. It's perfectly legal. Just set your program up so that each element of that array of pointers points to a mine location.