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 originalvoid func(int v) {
v = 0;
}
int main() {
int x = 5;
func(x);
...
func(11); // permite una constante
}
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 originalvoid func(int *v) {
*v = 0;
}
int main() {
int x = 5;
func(&x);
...
}
Saludos.