How void pointer arithmetic is happening in GCC
c, gcc, pointer-arithmetic, pointers, void-pointers
Solution
C does not allow pointer arithmetic with `void *` pointer type.
GNU C allows it by considering the size of `void` is `1`.
From 6.23 Arithmetic on void- and Function-Pointers:
In GNU C, addition and subtraction operations are supported on pointers to void and on pointers to functions. This is done by treating the size of a void or of a function as 1.
http://gcc.gnu.org/onlinedocs/gcc/Pointer-Arith.html
Now to answer this question:
Also, why dereferencing is not possible for void pointer, if it is implicitly doing pointer arithmetic.
GNU C allows pointer arithmetic with `void *` but still does not allow an object of type `void` to be declared.
Problem
``` int main() { int a; void *p; p = &a; printf("%ld\n",(long)p); p = p+1; printf("%ld\n",(long)p); } ``` In this program, `p+1` is just incrementing the value of p by 1. I know `void pointer arithmetic` is not possible in `C`, so `GCC` is doing it implicitly. And if yes, then is it taking it as `char pointer`. Also, why `dereferencing` is not possible for void pointer, if it is implicitly doing pointer arithmetic.