Другой ответ совершенно неправильный:
int *p = &a;
объявляет единственную переменную-указатель (не массив указателей).Это эквивалентно WRT-индексации с массивом с одним элементом:
int *(array[1]) = { &a };
, так что вы можете сделать (&array[0]) + 1
или array + 1
, или p + 1
, потому что формируете одно прошлоеуказатель конца допускается: указатель «один за концом» указывает на воображаемый элемент, который находится сразу после конца массива.Указатель "один за концом" не разыменовывается, поскольку он указывает на отсутствие реального объекта.
Но вы не можете вычислить любое другое значение указателя .
В частности, p+2
является , а не действительным.