Использование оператора -> в операторах возврата в C - PullRequest
0 голосов
/ 26 февраля 2019

Я работаю над изучением C, и я не могу полностью понять одну из проблем, с которой столкнулся.Вопрос в том, что может пойти не так, если вы вернетесь с помощью оператора ->.Итак, если код изначально делает это:

myVariable = foo->bar;
return myVariable;

, а затем, если он был изменен на это:

return foo->bar;

, что пошло бы не так?Кажется, что все еще должно быть хорошо, поэтому я не уверен, почему что-то пойдет не так.

1 Ответ

0 голосов
/ 26 февраля 2019

Вы конвертируете переменную одноразового использования в возврат этой вещи напрямую.Это разрешено и в этом случае предпочтительнее, поскольку позволяет избежать возможных ошибок при объявлении неправильного типа для myVariable.

. В -> нет ничего особенного в контексте return.Вы можете вернуть любое выражение , и такие вещи, как ->, могут быть частью выражения.

Если вам интересно, вы можете прочитать спецификацию C , гдеэто прописано:

return [ expr ] ';'

Таким образом, это означает, что если foo->bar является допустимым выражением, как, например, это компилируемый бит кода, то return foo->bar; также является допустимым.Ваш код подразумевает, что foo - это своего рода указатель на что-то, что имеет bar в качестве свойства.Если это не так, то ни одна из версий не будет работать.Это также зависит от типа возвращаемого значения рассматриваемой функции, соответствующего типу этого свойства.

...