Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Compilación y ejecución del "programa":
- adrian@ubuntu:~$ gcc -Wall -o test puntero.c
- adrian@ubuntu:~$ ./test
- Main (1): 10
- Funcion (1): 10
- Funcion (2): 5
- Main (2): 5
- */
- #include <stdio.h>
- void recibe_puntero(int *n) {
- /*
- Recibo la direccion de memoria (el puntero), y lo "guardo" en "n", por tanto, con "n" puedo
- acceder al valor que contiene la direccion de memoria (ahora mismo, "10"), y modificarlo, y en este caso
- que afecte al resto de funciones
- */
- // Imprimo el contenido del puntero, "10" (mira la función "main": int x = 10;)
- printf("Funcion (1): %d\n", *n);
- // Modifico el contenido del puntero, ahora le digo que sea "5"
- *n = 5;
- // Imprimo, y, obviamente, sale "5"
- printf("Funcion (2): %d\n", *n);
- }
- int main(void) {
- // La variable "x" tiene como valor "10"
- int x = 10;
- // Imprime el valor de la variable "x", es decir, "10"
- printf("Main (1): %d\n", x);
- /*
- Se pasa la variable "x" como puntero a la funcion "recibe_puntero"
- Tu le pasas la direccion de memoria de "x", pero no le dices que se llama "x", unicamente le pasas la direccion,
- la funcion que la recibe ya referenciará a dicha direccion como quiera, en este caso, "n"
- */
- recibe_puntero(&x);
- // MIRA LA FUNCION DE ARRIBA, LUEGO SIGUES POR AQUI
- // Como la funcion ha modificado el valor de la direccion de memoria que le he pasado, al imprimir el valor, ahora saldrá "5"
- printf("Main (2): %d\n", x);
- return 0;
- }
Add Comment
Please, Sign In to add comment