7.4 Parámetros por referencia a funciones


En C todos los parámetros se pasan por valor. Esto tiene en principio dos inconvenientes:

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.