Como a aritmética de ponteiro vazio está acontecendo no GCC

int main()  
{  
    int a;  
    void *p;  
    p = &a;  
    printf("%ld\n",(long)p);  
    p = p+1;  
    printf("%ld\n",(long)p);  
}  

Neste programa,p+1 está apenas incrementando o valor de p por 1. Eu seivoid pointer arithmetic não é possível emC, assimGCC está fazendo isso implicitamente. E se sim, então é isso comochar pointer. Além disso, por quedereferencing não é possível para o ponteiro vazio, se estiver implicitamente fazendo aritmética de ponteiro.

questionAnswers(1)

yourAnswerToTheQuestion