>> DAVID J. MALAN: Vamos a escribir un programa en que tratamos de cambiar los valores de
dos variables, X e Y.
De antemano, he escrito mucho de este programa ya.
En primer lugar, declaro una variable, x, y almacenar en ella el valor de 1.
Entonces me declaro variable y y almacenar en ella el valor de 2.
>> Luego procedo con printf para mostrar los valores de estas dos variables.
Entonces yo reclamo con otra printf para ser intercambio de esas variables.
Entonces yo llamo una función llamada swap.
Y entonces yo sostengo que las variables se han intercambiado.
Y luego imprimo lo que yo reclamo son los nuevos valores de x e y.
>> Ahora, ¿qué es este canje función?
No es algo que viene con C. De hecho, si nos fijamos en la parte superior de mi
archivo, te darás cuenta de que he declarado un prototipo para esta función de intercambio
especificando que se necesitan dos enteros, arbitrariamente llamadas A y B, y este
función no devuelve nada.
Así que, presumiblemente, se hace lo que dice en una de las permutas y los valores de b.
Ahora vamos a implementar swap.
>> En primer lugar, voy a declarar el temporal variable y asignarle
el valor de una, aunque sólo pudiera como se almacena fácilmente en ella b.
Entonces yo voy a cambiar el valor de un ser igual a la de B.
Y luego, por último, voy a cambiar el valor de b para ser lo que era, pero es un
ahora en temp.
>> Ahora puedo reclamar lo que acabo de hacer es lógicamente correcto.
Yo he guardado una en una variable temporal, cambiado el valor de un ser B y, a continuación,
cambiado el valor de b para ser lo que fue una de.
Pero cuando compilar y ejecutar este programa, me preocupa que no es
va de lo que veo.
>> Hacer, no intercambio.
dot slash, ningún intercambio.
Y, por desgracia, de acuerdo con printf, el valor de x e y, incluso
después de que pretendemos ser el canje ellos, sigue siendo 1 y 2.
>> Ahora ¿por qué es eso?
Bueno, resulta que en la principal, cuando llamar a esta función de intercambio, pasando
xey como argumentos, en realidad es copias de x e y que
se pasó a swap.
Es decir, sus valores 1 y 2 son pasado a la memoria de intercambio como a y b.
Y es a y b que somos en última instancia, intercambio de principal.
>> Es decir, 1 se convierte en 2, 2 se convierte en 1.
Pero debido permuta no devuelve ningún valor y porque recibió copias de x
ey, es el comportamiento ha ningún efecto en xe y.
De hecho, a y b están en el ámbito, por así decirlo, para cambiar, mientras que x e y se mantienen
como alcance principal.
>> Así que tenemos un problema.
Pero, ¿cómo solucionarlo?