Как уже упоминалось, вы пытаетесь вернуть адрес временной переменной.То, что никто не упомянул, является самым простым решением.Приведите переменную как статическую внутри функции.Это позволяет ему оставаться в памяти для всей программы.
int * func(int *xp)
{
static int y;
y = 10 + *xp;
return (&y);
}
void main()
{
int x = 10;
int *xp = func(&x);
printf("%d\n", x);
printf("%d\n", *xp);
}
Это работает, как и ожидалось.Конечно, есть лучшие способы сделать это, но это самое простое решение, если вы действительно хотите объявить переменную внутри области функции и вернуть ее адрес.Имейте в виду, что каждый раз, когда эта функция вызывается, она изменяет y, она не дает вам копию.