I don't understand the difference in the position of ? in the identifier.

In function arguments, why is ?agent used with ? preceding the identifier, while in actual usage, it is Agent := QAgent? with ? following the identifier? What is the significance of the different positions of ? ?