Wie die Leerzeigerarithmetik in GCC abläuft
int main()
{
int a;
void *p;
p = &a;
printf("%ld\n",(long)p);
p = p+1;
printf("%ld\n",(long)p);
}
In diesem Programmp+1
erhöht nur den Wert von p um 1. Ich weißvoid pointer arithmetic
ist nicht möglich inC
, soGCC
tut es implizit. Und wenn ja, dann ist es sochar pointer
. Auch warumdereferencing
ist für void pointer nicht möglich, wenn implizit Zeigerarithmetik ausgeführt wird.