Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/08/2012, 06:30
ecfisa
 
Fecha de Ingreso: julio-2012
Mensajes: 133
Antigüedad: 12 años, 8 meses
Puntos: 22
Respuesta: Duda en C: función con parámetros por referencia.

Hola feivelfabiola.

Copié y probé el ejemplo de tu mensaje. Y si bién tuve que agregarle una llave ( '}'), que supongo fue una omisión al escribir, obtengo el mismo resultado que te dá el libro. Ese código está precisamente para que hagas una traza (prueba de escritorio) y entiendas la diferencia entre parámetros o por valor o referencia.

Básicamente, cuando le se pasa a una función un parámetro por valor, la función crea una copia local del argumento, por lo que las modificaciones que se hagan dentro de la función no alteran el valor de la variable enviada, también permite enviar una constante. Ejemplo:
Código C:
Ver original
  1. void func(int v) {
  2.   v = 0;
  3. }
  4.  
  5. int main() {
  6.   int x = 5;
  7.   func(x);
  8.   printf("%d",x); // muestra 5
  9.   ...
  10.   func(11); // permite una constante
  11. }

Cuando se le pasa a una función un parámetro por referencia, se envía la dirección de la variable y no su contenido, por lo que cualquier cambio que se realize dentro de la función altera su valor, lógicamente no permite enviar una constante. Ejemplo:

Código C:
Ver original
  1. void func(int *v) {
  2.   *v = 0;
  3. }
  4.  
  5. int main() {
  6.   int x = 5;
  7.   func(&x);
  8.   printf("%d",x); // muestra 0
  9.   ...
  10. }

Saludos.