Jak pusta arytmetyka wskaźników występuje w GCC
int main()
{
int a;
void *p;
p = &a;
printf("%ld\n",(long)p);
p = p+1;
printf("%ld\n",(long)p);
}
W tym programiep+1
po prostu zwiększa wartość p o 1. Wiemvoid pointer arithmetic
nie jest możliwe wC
, więcGCC
robi to pośrednio. A jeśli tak, to czy bierze to jakochar pointer
. Również dlaczegodereferencing
nie jest możliwe dla wskaźnika void, jeśli niejawnie wykonuje arytmetykę wskaźników.