Как работает этот код, если после возврата элемента управления к переменной main() i удаляется из стека, как значение все равно может быть 5, поскольку i не существует в main() и переменной, на которую указывает указатель не существует.Как работает указатель?
#include<stdio.h>
int* sum() {
int i=5;
int*a=&i;
printf("%d\n",a);
return a;
}
int main() {
int* a=sum();
printf("%d\n",a);
printf("%d",*a);
}
выход:
2293252
2293252
5
Возможный дубликат [возврат локальной переменной из функции в C] (http://stackoverflow.com/questions/4824342/returning-a-local-variable-from-function-in-c) – juanchopanza
Возможный дубликат [ Можно ли получить доступ к локальной папке за пределами ее возможностей?] (Http://stackoverflow.com/questions/6441218/can-a-local-variables-memory-be-accessed-outside-its-scope) – Deduplicator