 <p>First of all per K&amp;R, the answer is yes.</p> <p>At the conceptual level an array name is a ptr, they are absolutely the same thing, CONCEPTUALLY.</p> <p>How a compiler implements an array is up to the compiler. This is the argument between those who say they are not the same thing and those who say they are.</p> <p>A compiler could implement <code>int a[5]</code> as the pointer <code>a</code> to an unnamed chunk of storage that can contain 5 integers. But they don't. It is easier for a compiler writer to generate code for a simple array and then fudge on the pointer-ness of <code>a</code>.</p> <p>Anyway, conceptually, the data area allocated by the <code>int a[5];</code> statement can be referenced by the ptr <code>a</code> or it can be referenced by the pointer produced by the <code>&amp;a[0]</code> statement.</p>