title: Concept of void pointer in C programming
body: <p>Is it possible to dereference a void pointer without type-casting in the C programming language?</p>
  
  <p>Also, is there any way of generalizing a function which can receive a pointer and store it in a void pointer and by using that void pointer, can we make a generalized function?</p>
  
  <p>for e.g.:</p>
  
  <pre><code>void abc(void *a, int b)
  {
     if(b==1)
        printf("%d",*(int*)a);     // If integer pointer is received
     else if(b==2)
        printf("%c",*(char*)a);     // If character pointer is received
     else if(b==3)
        printf("%f",*(float*)a);     // If float pointer is received
  }
  </code></pre>
  
  <p>I want to make this function generic without using if-else statements - is this possible? </p>
  
  <p>Also if there are good internet articles which explain the concept of a void pointer, then it would be beneficial if you could provide the URLs.</p>
  
  <p>Also, is pointer arithmetic with void pointers possible?</p>