Этот конкретный указатель размещается в стеке, потому что это автоматическая переменная.Это ничем не отличается от «обычной» переменной без указателя.Если под «распределением памяти» вы подразумеваете размер выделения, то да, размер указателя может зависеть от типа указателя .
. Вы можетеузнать размер указателя с помощью sizeof
.В этом случае b
занимает sizeof(int *)
байт, что зависит от платформы (обычно 4 или 8 байт на современных машинах).
Вы можете выделить указатель на свободное хранилище (кучу), если хотите:
int **pp = malloc(sizeof(int *)); // allocates space for a single pointer
(Обратите внимание, что ваш пример программы ошибочен: a=&b
должно быть b=&a
.)