В выражении присваивания языка C левый операнд должен создать объект , в который будет сохранен правый операнд.Это означает, что любое условное выражение , которое разрешается для присваиваемого объекта, подойдет.
Но поскольку в C не существует концепции ссылочного объекта , вы не может напрямую использовать функцию слева от присвоения .Вместо этого это возможно в C ++, где он существует.Т.е. в C ++ вы можете иметь:
int &obj(int pos);
...
obj(0) = 3;
В C вы можете смоделировать предыдущее поведение с помощью небольшой хитрости: заставить вашу функцию возвращать указатель на объект, а затем разыменовывать возвращаемое значение, прежде чем назначить его.Рассмотрим следующий фрагмент:
int *GetPtr(int pos);
...
*GetPtr(0) = 3;
Здесь функция GetPtr()
возвращает ссылку на объект, который мы разыменовываем и назначаем.