Как происходит арифметика пустых указателей в GCC
int main()
{
int a;
void *p;
p = &a;
printf("%ld\n",(long)p);
p = p+1;
printf("%ld\n",(long)p);
}
В этой программеp+1
просто увеличивает значение р на 1. Я знаю,void pointer arithmetic
невозможно вC
, такGCC
делает это неявно. И если да, то принимает ли это какchar pointer
, Кроме того, почемуdereferencing
невозможно для пустого указателя, если он неявно выполняет арифметику указателя.