Когда переменная определена внутри некоторого блока, она уничтожается, когда достигнут конец блока.Указатель, возвращающий адрес
Так из приведенной ниже программы я ожидал какой-то предупреждения
#include<stdio.h>
int *fun()
{
int i=10;
return &i;
}
int main(void)
{
int *p=fun();
return 0;
}
Я ожидаю, что предупреждение, как я пытаюсь вернуть адрес локальной переменной я, которая будет разрушена, когда управление выходит из сфера
Но если сохранить значение переменной я в некотором целом указателем, а затем возвращает значение от удовольствия, как этот
#include<stdio.h>
int *fun()
{
int i=10,*p;
p=&i;
return p;
}
int main(void)
{
int *p=fun();
return 0;
}
Почему я не получаю какой-либо вес подрабатывать?
где вы указали 'p' во второй функции кода' fun() '. Я думаю, вы имели в виду 'int i = 10, * p;' – Haris
Пожалуйста, исправьте вторую программу, как в том, что такое p, и где она объявлена. Кроме того, вы имеете в виду, что вы получаете предупреждение в первой программе, а не во втором? – thepace
Извините за Типо. Я отредактировал вопрос. Да, я получаю предупреждение сначала, но не во второй программе –