7.4 Parámetros
por referencia a funciones
En
C todos los parámetros se pasan por valor. Esto tiene en principio dos
inconvenientes:
- No
se pueden modificar variables pasadas como argumentos
- Si
se pasa como parámetro una estructura, se realiza un duplicado de ella,
con lo que se pierde tiempo y memoria
Sin
embargo, se puede pasar un puntero como argumento a una función. El
puntero no se puede alterar, pero sí el valor al que apunta:
void incrementa_variable (int* var)
{
(*var)++;
}
main()
{
int x = 1;
incrementa_variable (&x); /* x pasa a valer 2 */
}
En
el ejemplo anterior, habia que poner paréntesis en
(*var)++
porque el operador
++
tiene más precedencia que la desreferencia (el asterisco). Entonces
*var++
sería como escribir
*(var++),
que no sería lo que queremos.