Hola.
Si, en C++ se puede conseguir lo mismo con ambos y, salvo algunos casos, se puede prescindir de las referencias. En C no existe el paso de parámetros por referencia (si bién se simula con punteros).
La referencia es como un alias o etiqueta de una variable por lo que deben inicializarse al declararlas,
Código PHP:
int nro = 115;
int &ref_nro = nro;
int &ref; // no tiene sentido
mientras que el puntero es una variable que almacena una dirección de memoria.
¿ Por qué usar uno u otro en los parámetros ? creo que la ventaja mas notoria es mayor simpleza y legibilidad.
Puntero:
Código PHP:
void inc(int* i, const int n)
{
*i += n;
}
int main()
{
int x = 5;
inc( &x, 5 );
cout << x ; // 10
...
Referencia:
Código PHP:
void inc(int& i, const int n)
{
i += n;
}
int main()
{
int x = 5;
inc(x, 5);
cout << x; // 10
...
Buscando por los términos sin dudas hallaras mas detalles, como por ejemplo en este enlace:
Parámetros por valor y por referencia
Saludos