Можно создать дубликат:
Can a local variable's memory be accessed outside its scope?Указатель на локальную переменную в C++
Я следующий код в C++
int* foo()
{
int myVar = 4;
int* ptr = &myVar;
return ptr;
}
int main()
{
printf("val= %d", *foo());
return 0;
}
Выход я получаю:
val = 4
Итак, мой вопрос в том, что myVar - это локальная переменная, не следует ли ее уйти после возвращения функции? и не должен ли указатель на него быть нулевым указателем?
Хах! теперь, когда вы снова вызываете функцию. Я просто немного экспериментировал, и появился еще один вопрос!: D Так что я только что немного изменил свой код 'code int main() { printf (" * bar =% d \ n ", foo()); printf ("* bar2 =% d \ n", foo()); система («пауза»); return 0; } ' бар и бар2 имеют такое же значение! : O – 0x56794E
Правильно, каждой объявленной переменной присваивается одна постоянная ячейка памяти. Это место не изменится во время выполнения программы. Но, как упомянул пользователь966379, он не гарантированно станет уникальным местом для всех областей. –