I disagree with that: references make it very unclear at function call time whether an argument is modified or not. They require the person reading the code to know the prototype of each and every called function to know if it might by any chance modify its arguments.

Pointers make it clear at function call time what arguments are modified and what are not (those that are are passed explicitly by address).

https://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=Reference_Arguments#Reference_Arguments explains further in details why.