The following code is compiling using gcc although void ptr
arithmetic is not standard:
int main(){
int a = 5;
void* b = (void*) &a;
b++;
}
This is an extension supported by GCC. It treats a void *
like a char *
.
From the gcc docs:
6.24 Arithmetic on
void
- and Function-PointersIn 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 avoid
or of a function as 1.A consequence of this is that
sizeof
is also allowed onvoid
and on function types, and returns 1.