Это вопрос из курса на языке С. Кто-то хочет вернуть значение из функции указателем. Он присваивает адрес указателю result_ptr и печатает значение этого указателя.Значение возвращаемого указателя неожиданно изменяется после вызова функции
Когда нет линия А, Е() работает отлично: Е() печатает 3.
Однако, когда другая функция добавления() вызывается перед Е(), что-то не так происходит: Е() печатает 5.
Если линия а закомментирована и линии B, другой PRINTF функция(), является раскомментирована: Е() печатает 0.
Что именно происходит?
int *addition(int a, int b) {
int d = a + b;
int *c = &d;
return c;
}
int main(int argc, const char * argv[])
{
int *result_ptr = addition(1, 2);
addition(2, 3); // Line A
// printf("Another line\n"); // Line B
printf("result = %d \n", *result_ptr);
return 0;
}
Подсказка: вы возвращаете указатель на локальную переменную –