Zeiger zu übergeben ist sauberer bei solchen Sachen. Es muss nicht extra eine Kopie angelegt werden, was bei Parameterübergabe by value nötig ist. Hat also programmiertechnisch einige Vorteile, man könnte es auch "normal" mit by value lösen ..
Warum das mit dem & nicht funktioniert frage ich mich .. sollte eigentlich funktionieren.