Когда создается переменная, такая как:
int x = 5;
, она будет храниться где-то в памяти, круто.
Однако, когда я изменяю значение переменной, выполняя следующие действия:
x = 10;
Что происходит в памяти?
Заменяет ли новое значение x
старое значение, используя тот же адрес памяти?
или это новоезначение сохраняется в новом адресе памяти, а затем старый адрес удаляется?
Этот вопрос возник, когда я наткнулся на указатели.Кажется, что использование указателей для изменения значения переменной - это то же самое, что и определение переменной с другим значением.
это мой код (большинство из них - комментарии (смеется)):
#include "iostream"
int main()
{
int x = 5; // declaring and defining x to be 5
int *xPointer = &x; // declare and define xPointer as a pointer to store the reference of x
printf("%d\n",x); // print the value of x
printf("%p\n",xPointer); // print the reference of x
x = 10; //changing value of x
printf("%d\n",x); //print new value of x
printf("%p\n",xPointer); //print the reference of x to see if it changed when the value of x changed
*xPointer = 15; //changing the value of x using a pointer
printf("%d\n",x); //print new value of x
printf("%p\n",xPointer); //print reference of x to see if it changed
return 0;
}
это вывод:
5
00AFF9C0
10
00AFF9C0
15
00AFF9C0
Как вы можете видеть, адреса памяти одинаковы, отсюда и смысл указателей (каламбур предназначен).