Lección 20: Paso por dirección — un swap que funciona
¿Recuerdas el swap roto de la lección 10? La función recibía copias de x y de y, intercambiaba las copias — y los originales se quedaban igual. Hoy lo arreglamos: void swap(int *a, int *b) recibe direcciones, y lo llamamos con swap(&x, &y);. Escribir a través de *a y *b cambia las variables reales d
Pedirle a un técnico que arregle una foto de tu sala no ayudará: arreglará la foto. El swap de la lección 10 recibía 'fotos' (copias). Cuando le das la dirección y la llave (&x), entra y cambia la sala real.
- paso por valor
- El comportamiento predeterminado de C: la función recibe una copia. Cambiar la copia no toca el original — por eso el swap de la lección 10 falló.
- paso por dirección
- Pasa &x en vez de x. La función escribe a través del puntero y cambia la variable real.
- parámetro de salida
- Un puntero a través del cual la función escribe un resultado — así 'devuelves' más de un valor.
- puntero a struct
- Un puntero que guarda la dirección de un struct: struct Student *s = &st;.
- el operador flecha ->
- s->grade es una abreviatura de (*s).grade: ve al struct en esa dirección y toma el campo.