This is a style issue, so there is no right or wrong, but I suggest using a const reference for an input-only paramater to a C++ function and a pointer for an input/output or output-only parameter. This makes it slightly more obvious that the parameter might be modified by the function.
Example:
ReturnType Function
(
const ParamType& inputParam,
ParamType* inputOutputParam,
ParamType* outputParam
)
{
// ...
}
void User()
{
ParamType inputParam;
ParamType inputOutputParam;
ParamType outputParam;
// Note the &s -- this is a bit of a warning something
// might happen to inputOutputParam or outputParam...
ReturnType ret = Function
(
inputParam,
&inputOutputParam,
&outputParam
);
}