title: How void pointer arithmetic is happening in GCC
body: <pre><code>int main()  
  {  
      int a;  
      void *p;  
      p = &amp;a;  
      printf("%ld\n",(long)p);  
      p = p+1;  
      printf("%ld\n",(long)p);  
  }  
  </code></pre>
  
  <p>In this program, <code>p+1</code> is just incrementing the value of p by 1. I know <code>void pointer arithmetic</code> is not possible in <code>C</code>, so <code>GCC</code> is doing it implicitly. And if yes, then is it taking it as <code>char pointer</code>. Also, why <code>dereferencing</code> is not possible for void pointer, if it is implicitly doing pointer arithmetic.</p>