Это код, который у меня есть вопрос о:Области применения и указатели
int* getPtrToFive() {
int x = 5;
return &x;
}
int main() {
int *p = getPtrToFive();
cout << *p << endl; // ???
}
Лекционные слайды говорят, что * р не даст правильный результат, потому что, как возвращается getPtrToFive х выходит из области видимости. Однако я думал, что getPtrToFive уже будет содержать значение 5, которое будет проверять * p? Это из-за указателя, пытающегося направить меня на getPtrToFive, который имеет вне области x?
Nice аналогичный пример. –
Я думаю, что я все еще не понимаю, потому что это противоречит ответу на другой вопрос. http://stackoverflow.com/questions/6441218/can-a-local-variables-memory-be-accessed-outside-its-scope Другой вопрос показал, что, хотя кто-то набирал код в том же формате, они все еще могли получить результат от cout. Прямо сейчас, в лекции говорится, что вы не получите никакого результата, как и вы. – blueyfooey
@blueyfooey, оба ответа имеют одинаковую идею. (Тот, с которым вы связаны, на самом деле лучше, чем у меня). Вы можете получить случайный результат. Случайный результат - это просто случайный. Может получиться 5, может получиться 42, может произойти сбой программы (вариант случайного результата) или что-нибудь еще. – SergeyA