Paso por valor vs referencia

Lenguaje c/c++

En C, hay dos formas en que una función puede recibir argumentos: por valor (o por copia) y por referencia (o por puntero). A continuación, explicaré brevemente cada uno de ellos:

  1. Paso por valor: Cuando una función recibe un argumento por valor, significa que se crea una copia del valor original y esta copia se utiliza dentro de la función. Esto significa que cualquier cambio que se realice dentro de la función no afectará el valor original. Al terminar la función, la copia desaparecerá y el valor original no habrá sido modificado.

Aquí te muestro un ejemplo de una función que recibe un argumento por valor:

void duplicar(int num) {
    num = num * 2;
    printf("El doble de num es: %d\n", num);
}

int main() {
    int x = 5;
    duplicar(x);
    printf("El valor original de x es: %d\n", x);
    return 0;
}

En este ejemplo, la función «duplicar» recibe el valor de «x» por valor. Dentro de la función, se crea una copia del valor de «x» y se duplica. Sin embargo, cuando se imprime el valor original de «x» después de llamar a la función, sigue siendo 5, ya que la función solo modificó una copia del valor original.

  1. Paso por referencia: Cuando una función recibe un argumento por referencia, significa que se pasa la dirección de memoria donde se encuentra el valor original. Esto permite que la función modifique directamente el valor original y que cualquier cambio que se realice dentro de la función afecte el valor original.

Aquí te muestro un ejemplo de una función que recibe un argumento por referencia:

void duplicar(int *num) {
    *num = *num * 2;
    printf("El doble de num es: %d\n", *num);
}

int main() {
    int x = 5;
    duplicar(&x);
    printf("El nuevo valor de x es: %d\n", x);
    return 0;
}

En este ejemplo, la función «duplicar» recibe la dirección de memoria de «x» como argumento. Dentro de la función, se utiliza el operador «*» para acceder al valor almacenado en esa dirección de memoria y se duplica. Cuando se imprime el nuevo valor de «x» después de llamar a la función, se puede ver que ahora es 10, ya que la función modificó directamente el valor original.

Espero que esto haya sido útil para ti. Si tienes alguna otra pregunta, no dudes en preguntar.

Puede que también te guste...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *