Я думал, что оператор ++ в этом случае изменит мою ссылку с i на j и t ....
Это неправильно.Для этих определений:
int i = 10;
int j = 20;
Нет правила, которое позволяло бы хранить j
в ячейке памяти рядом с i
.
Более того, не путайте указатели (абстрактное понятие) с тем, что они моделируют (адрес физической памяти).Для большинства вещей хорошо думать об указателях как об адресах в физической памяти, однако, строго говоря, это не так.
Стандарт C ++ определяет определенные правила для указателей и то, что вы можете с ними делать.Увеличение указателя на int
для получения указателя на другой int
, определенный сразу после, не является одним из этих правил!Обратите внимание, что даже если в вашей аппаратной памяти два целых числа будут храниться в смежной памяти, при этом указатель по-прежнему будет увеличиваться до i
, а затем разыменовываться, что это неопределенное поведение.