En ese contexto, la & hace que la variable de referencia.
Por lo general, cuando se pasa una variable a una función, la variable se copia y la función funciona en la copia. Cuando la función retorna, su variable original no cambia. Cuando pasa una referencia, no se realiza ninguna copia y los cambios realizados por la función aparecen incluso después de que la función retorna.
C no tiene referencias, sino un C++ de referencia es funcionalmente lo mismo que un puntero en C. Realmente la única diferencia es que los punteros tienen que ser dereferenced cuando los utiliza:
*filename = "file.wav";
Pero las referencias se puede utilizar como si se tratara de la variable original:
filename = "file.wav";
Aparentemente, se supone que las referencias a no ser nula, aunque no es imposible que eso ocurra.
La función C equivalente sería:
void read_wav(const char* filename)
{
}
Esto es debido a que C no tiene string
. La práctica habitual en C es enviar un puntero a una matriz de caracteres cuando se necesita una cadena. Al igual que en C++, si escribe una constante
read_wav("file.wav");
string El tipo es const char*
.
http://en.wikipedia.org/wiki/Reference_ (C% 2B% 2B) –
como @Tim Medora dijo http://en.wikipedia.org/wiki/Reference_%28C%2B%2B%29 (pero he corregido el enlace;)) –
@ Hernán Eche - Pegar fallar de mi parte ... ¡Gracias! –