How does C guarantee that the memory address equaling the array value will be available? : <pre><code>char str[] = 'hello';
printf("%x, %x", str, &amp;str)
</code></pre>

<p>In C the value of an array and the memory address of an array are the same.</p>

<p>How does C guarantee that the address will be available? 
What happens if it is taken?
What if there are two arrays with the same value?</p>
