Pointers vs extern variables

What is the difference between pointers and external variables? It seems like for what im using pointers for I can use an extern var and accomplish the same thing with less confusion. IE. passing an array to a sub routine.

an extern might resolve to the address of a constant rather than a variable, so the compiled code might differ, depending on the CPU type.

Passing an array to a function is always (per me) done by reference, i.e., passing the address of the array. Odd thing in C is that just using the name of an array implies the first (0th) element. Whereas the address-of operator, &, is needed for others.