Snippets

Diego Silva Ejemplo de paso de parámetros por valor y por referencia

Created by Diego Silva
/* 
 * File:   main.c
 * Author: dsilva
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/*
 * Demostracion del pase de argumentos por valor y por referencia
 */


int main() {
    int a = 10, b = 20, c = 30; // declaro y asigno valores
    printf("Valores antes de llamar a método m1():\n");
    printf("a=%d\tb=%d\tc=%d", a, b, c); //imprime a=10    b=20    c=30
    m1(a, b, c);
    printf("\nValores después de llamar a método m1():\n");
    printf("a=%d\tb=%d\tc=%d", a, b, c); // vuelve a imprimir a=10    b=20    c=30
    // porque no ha cambiado. Es por valor

    m2(&a, &b, &c);
    printf("\nValores después de llamar a método m2():\n");
    printf("a=%d\tb=%d\tc=%d", a, b, c);
    //imprime a=100   b=200   c=300
    // porque, al usar punteros, es por referencia


    return (EXIT_SUCCESS);
}
// Por valor
int m1(int a, int b, int c) {
    a = 100;
    b = 200;
    c = 300;
    printf("\nValores cambiados en el método m1():\n");
    printf("a=%d\tb=%d\tc=%d", a, b, c); // imprime a=100  b=200   c=300
}
//Por referencia
int m2(int *a, int *b, int *c) {
    *a = 100;
    *b = 200;
    *c = 300;
    printf("\nValores cambiados en el método m2():\n");
    printf("a=%d\tb=%d\tc=%d", *a, *b, *c); // imprime a=100  b=200   c=300
}

Comments (0)