Адрес не изменился. Вы смотрите на две отдельные переменные.
В функции main
вы определяете переменную с именем p1
. Эта переменная имеет определенный адрес. Затем вы передаете значение из p1
в функцию ptr_change
.
В ptr_change
, у него есть параметр с именем p
. Эта переменная имеет свой собственный адрес, отличный от p1
в main
, хотя она содержит то же значение, что и p1
.
Вы можете быть сбиты с толку, поскольку рассматриваемый параметр является указателем. Это ничем не отличается от параметра без указателя. Например:
void foo(int x)
{
cout << &x << end;
}
int main()
{
int y = 0;
cout << &y << end;
foo(y);
return 0;
}
Здесь x
в foo
и y
в main
- это разные переменные, каждая со своим адресом, но обе они содержат значение 0.