Guest User

Untitled

a guest
Jul 17th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. /*
  2.  
  3. Compilación y ejecución del "programa":
  4.  
  5. adrian@ubuntu:~$ gcc -Wall -o test puntero.c
  6. adrian@ubuntu:~$ ./test
  7. Main (1): 10
  8. Funcion (1): 10
  9. Funcion (2): 5
  10. Main (2): 5
  11.  
  12. */
  13.  
  14. #include <stdio.h>
  15.  
  16.  
  17. void recibe_puntero(int *n) {
  18. /*
  19. Recibo la direccion de memoria (el puntero), y lo "guardo" en "n", por tanto, con "n" puedo
  20. acceder al valor que contiene la direccion de memoria (ahora mismo, "10"), y modificarlo, y en este caso
  21. que afecte al resto de funciones
  22. */
  23. // Imprimo el contenido del puntero, "10" (mira la función "main": int x = 10;)
  24. printf("Funcion (1): %d\n", *n);
  25. // Modifico el contenido del puntero, ahora le digo que sea "5"
  26. *n = 5;
  27. // Imprimo, y, obviamente, sale "5"
  28. printf("Funcion (2): %d\n", *n);
  29. }
  30.  
  31.  
  32. int main(void) {
  33. // La variable "x" tiene como valor "10"
  34. int x = 10;
  35. // Imprime el valor de la variable "x", es decir, "10"
  36. printf("Main (1): %d\n", x);
  37. /*
  38. Se pasa la variable "x" como puntero a la funcion "recibe_puntero"
  39. Tu le pasas la direccion de memoria de "x", pero no le dices que se llama "x", unicamente le pasas la direccion,
  40. la funcion que la recibe ya referenciará a dicha direccion como quiera, en este caso, "n"
  41. */
  42. recibe_puntero(&x);
  43. // MIRA LA FUNCION DE ARRIBA, LUEGO SIGUES POR AQUI
  44. // Como la funcion ha modificado el valor de la direccion de memoria que le he pasado, al imprimir el valor, ahora saldrá "5"
  45. printf("Main (2): %d\n", x);
  46. return 0;
  47. }
Add Comment
Please, Sign In to add comment