Intercambiar variables con función no funciona

Soy principiante con C, así que no me grites si estoy haciendo algo mal …

Pocas lecciones atrás, cuando estudié Variables , recibí una pregunta sobre cómo intercambiar dos números. Usé la tercera variable para resolver esta pregunta.
(Poniendo mi respuesta a esta pregunta, solo para evitar malentendidos):

introduzca la descripción de la imagen aquí

Ahora, cuando estoy estudiando el material de Funciones , quería probar esta pregunta utilizando una función. Este es el código que he escrito:

introduzca la descripción de la imagen aquí

No sé por qué, pero la salida seguirá siendo 3 4 aunque cambié el valor usando la función swap() . ¿Alguien tiene una idea de por qué sucede esto?

Gracias..

Pase la dirección de x e y como argumentos para funcionar. En este momento son variables locales, no se realizan cambios a las variables originales.

Haz lo siguiente

 void swap(int *x,int *y){ /* dereference pointers and swap */ int temp = *x; *x = *y; *y = temp; } 

Y llamar en main como este …

 swap(&x,&y); 

Lo que estás haciendo es pasar parámetro por valor. Esto significa que durante la llamada a la función, se crean copias de los parámetros. Así que dentro de la función estás trabajando en copias de variables reales.

En su lugar necesitas pasarlo como referencia. Lea más sobre paso por valor frente a paso por referencia.

 #include  void swap(int& x,int& y) //Instead of passing by value just pass by reference { int temp=x; x=y; t=yemp; } int main() { int a=3,b=4; swap(a,b); printf("%d %d\n",a,b); return 0; } 

EDIT : C no tiene referencias. El código anterior funcionará en c ++ en su lugar. Para realizar el trabajo en C, solo use los punteros y anule la referencia dentro de la función.