Snippets

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

Created by Diego Silva

File sample_args.c Added

  • Ignore whitespace
  • Hide word diff
+/* 
+ * 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
+}