title: Meaning of overlapping when using memcpy
body: <p>I am trying to understand the function <code>memcpy()</code> which is defined in the C library <code>&lt;string.h&gt;</code></p>
  
  <p>Syntax: <code>void *memcpy(void*dst,const void*src,size_t n);</code></p>
  
  <p>I know that this function is used to copy the contents of the memory pointed by pointer <code>src</code> to the location pointed by the <code>dst</code> pointer and return a address pointed by <code>dst</code> pointer.</p>
  
  <p>I am not able to understand the following important statement regarding <code>memcpy()</code>:</p>
  
  <ul>
  <li>When using <code>memcpy()</code>, memory address should not overlap, if it overlaps then the <code>memcpy()</code> is undefined.</li>
  </ul>
  
  <p>Another query is:
  Is the value passed to third argument of the function i.e <code>size_t n</code> is always an integer value?</p>