Давайте проанализируем функцию на секунду.
Прежде всего, какие виды всего, что здесь задействовано?
ptr
- указатель на int
.
- возвращаемое значение должно быть типа
int
.
Далее, что функция делает с этим?
- разыменовывает указатель
int
(т.е. читает значение int
, на которое указывает указатель) ptr
и возвращает это значение.
Далее рассмотрим, что делает ваш код.
- вы переместили аргумент в возвращаемое значение.
- возврат из функции.
Это правильно?
Я бы сказал нет. По сути, вы вернули указатель, а не значение, на которое указатель указывал.
Что вы можете с этим поделать?
Хорошо помните, с какими типами мы имеем здесь дело, и что вы с этим сделали. У вас есть аргумент (типа int *
), и вы его возвращаете (типа int
). Типы не совпадают. Что мы делали в программе C? Мы разыменовали указатель, чтобы получить значение. Другими словами, преобразовал int *
в int
. Вам нужно сделать то же самое.