title: Memcpy Casting C
body: <p>I'm a bit rusty on C and I was looking at an implementation of memcpy. I was wondering why do you need to cast the pointer pDst to an unsigned character? Same for pSrc? </p>
  
  <pre><code>void memcpy( void *pDst, void *pSrc, int len )
  {
      int i;
  
      if( pDst == NULL || pSrc == NULL )
          return;
  
      for( i=0; i&lt;len; i++ ) {
          ((unsigned char*)pDst)[i] = ((unsigned char*)pSrc)[i];
      }
  }
  </code></pre>