Если указатель хранит адресс ячейки, то где хранится само значение?? например где хранится число 5?
int *b = new int(5)
Указатель хранит адрес ячейки, в которой должно храниться какое - то значение (Как верно подсказал мне пользователь KoVadim, должно, но не всегда соблюдает это правило :) ). Когда нужно получить значение, программа смотрит адрес, находящийся в указателе, а потом извлекает значение по адресу, который был в нём. Всё просто.
EDIT, как говорится: адрес, который находится в указателе разный при каждом новом запуске программы. Он непостоянный. Существует специальная функция - аллокатор, которая и выделяет память под ячейку, на которую будет ссылаться указатель.
В случае выделения памяти оператором new память под значение выделяется в специальной области памяти, называемой кучей. А в указатель соответсвенно записывается адрес этого значения. Не стоит забывать освобождать память выделенную в куче, поскольку это может привести к утечке памяти: значение в куче будет храниться пока не вызовется оператор delete.
При объявлении переменной int a = 5 значение будет храниться в стеке и при выходе из функции выделенная память освободится автоматически.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости