<div>cualquiera de las formas que uses esta bien, realmente pasar por referencia es una forma elegante para no pasar un puntero, donde ya sea que lo hagas en el parametro de la funcion o cuando llames a la funcion realmente lo que pasas es la direccion de memoria (a que te recuerda? exacto a punteros), yo por lo general intento en lo posible (por no escribir mas codigo, mas que por otra razon) pasar por referencia mas alla de declarar un puntero y luego pasar ese puntero, pienso que al menos en c++ (no digo para c) el puntero no es (en mi forma de ver) para esta tarea que ha sido resuelta de forma mas practica pasando por referencia. veamos un ejemplo se atento a los detalles<br>
</div><div><br></div><div>void foo1(int & a){ a++;};</div><div>void foo2(int a){ a++;};</div><div>void foo3(int* a){  (*a)++;};</div><div><br></div><div>int main(void){<br>int a = 5;<br>int* pointertoa = &a;<br><br>
cout << a << endl; // imprime 5<br><br>foo1(a);<br><br>cout << a << endl; // imprime 6<br><br>foo2(a);<br><br>cout << a << endl; // imprime 6 de nuevo porque se paso como valor<br><br>foo3(&a); //ojo no pasas a la variable a pasas la direccion de memoria de a<br>
<br>cout << a << endl; // imprime 7 <br><br>foo3(pointertoa); <br>cout << a << endl; // imprime 8<br>cout << *pointertoa << endl; // imprime 8<br></div><div>}</div><div><br></div><div><br>
</div><div><br></div><div><br></div>