Saltar al contenido principal
eLearner.app
Módulo 3 · Lección 2 de 28/18 en el curso~12 min
Lecciones del módulo (2/2)

Paso por valor y referencia

En C++, cuando pasas un argumento a una función, hay dos formas principales de hacerlo: por valor o por referencia.

Comprender esta distinción es fundamental tanto para la corrección del programa como para optimizar el rendimiento.

Paso por Valor (Copia)

De forma predeterminada, C++ pasa los argumentos por valor. Esto significa que se crea una copia del dato en memoria. Cualquier modificación realizada dentro de la función no afectará a la variable original en el exterior:

Code
#include <iostream>

void increment(int n) {
    n++; // Modifica solo la copia locale
}

int main() {
    int x = 5;
    increment(x);
    std::cout << x << std::endl; // Stampa 5, x non è cambiata!
    return 0;
}

Paso por Referencia (&)

Si deseas que la función pueda modificar la variable original, o si quieres evitar copiar objetos grandes (como cadenas largas o vectores), debes utilizar el paso por referencia.

Una referencia se declara agregando el símbolo & después del tipo de parámetro:

Code
#include <iostream>

void incrementRef(int& n) {
    n++; // Modifica direttamente la variabile originale
}

int main() {
    int x = 5;
    incrementRef(x);
    std::cout << x << std::endl; // Stampa 6!
    return 0;
}

El parámetro int& n no es una copia, sino un alias (una referencia directa) para la variable x pasada en el momento de la llamada.

Pruébalo tú mismo

Ejercicio#cpp.m3.l2.e1
Intentos: 0Cargando...

Define una función doubleNumber con tipo de retorno void que tome una referencia a un entero n (usando int& n) y duplique su valor (n = n * 2). Llámala en el main pasándole la variable val inicializada a 10, luego imprime val.

Cargando editor...
Mostrar pista

La firma de la función utiliza el carácter `&`después del tipo para indicar una referencia:`void doubleNumber(int& n)`.

Solución disponible después de 3 intentos

Ejercicio#cpp.m3.l2.e2
Intentos: 0Cargando...

Define una función swap que tome dos referencias a entero a y b (int& a, int& b) y intercambie sus valores usando una variable temporal temp. Llámala en el main para intercambiar x y y, y luego imprímelos.

Cargando editor...
Mostrar pista

Usa `int temp = a; a = b; b = temp;` para intercambiar los valores.

Solución disponible después de 3 intentos