Посмотрите на код ниже. Я знаю, что он не возвращает адрес локальной переменной, но почему он все еще работает и назначает переменную i
в main() на "6"? Как это только возвращает значение, если переменная была удалена из памяти стека?
#include <iostream>
int& foo()
{
int i = 6;
std::cout << &i << std::endl; //Prints the address of i before return
return i;
}
int main()
{
int i = foo();
std::cout << i << std::endl; //Prints the value
std::cout << &i << std::endl; //Prints the address of i after return
}