Muy buenas, haciendo un ejercicio para intercambiar dos valores, hecho con dos funciones, una con llamada por valor, y otra por referencia, está todo correcto, pero a la hora de compilar, en el paso de parámetros por valor, no me cambia los valores, o sea, que en val1 es = 10 y val2 = 20.
He repasado todo el código y no encuentro nada, me estoy volviendo loco :/
/* Intercambio de valores usando llamada por valor y por referencia */
#include <stdio.h>
void IntercambioValor(int v1, int v2); //Utiliza variables
void IntercambioReferencia(int *pv1, int *pv2); //Utiliza punteros
main(){
int val1=10, val2=20;
printf("Valores iniciales:\n\tval1 = %d; val2 = %d\n",val1
,val2
);
// Paso de parámetros por valor
IntercambioValor(val1,val2);
printf("\nPaso de parametros por valor: \n\tval1 = %d; val2 = %d\n",val1
,val2
);
// Paso de parámetros por referencia
IntercambioReferencia(&val1,&val2);
printf("\nPaso de parametros por referencia: \n\tval1 = %d; val2 = %d\n",val1
,val2
); }
void IntercambioValor(int v1, int v2){
int tmp;
tmp = v1;
v1 = v2;
v2 = tmp;
}
void IntercambioReferencia(int *pv1, int *pv2){
int tmp;
tmp = *pv1;
*pv1 = *pv2;
*pv2 = tmp;
}
Si alguien me puede aclarar porqué ocurre esto, se lo agradecería ^^