Leer una dirección de memoria usando scanf () e imprimir su valor en C

Aquí, vamos a aprender a leer una dirección de memoria usando scanf () y el valor de impresión almacenado en la dirección de memoria dada en el lenguaje de programación C ?

En este caso, tenemos que introducir una dirección de memoria válida e imprimir el valor almacenado en la dirección de memoria en C

Para introducir e imprimir una dirección de memoria, utilizamos “% p” especificador de formato – el cual puede entenderse como “puntero en formato especificador” .

Programa:

En este programa – en primer lugar, estamos declarando una variable llamada num y asignar ningún valor en ella. Puesto que no podemos predecir una dirección de memoria válida. Así que aquí, vamos a imprimir la dirección de memoria de num y luego, vamos a leerlo desde el usuario e imprimir su valor.

#include <stdio.h>
int main(void)
{
int num = 123;
int *ptr; //to store memory address
printf("Memory address of num = %pn", &num);
printf("Now, read/input the memory address: ");
scanf ("%p", &ptr);
printf("Memory address is: %p and its value is: %dn", ptr, *ptr);
return 0;
}

salida

Memory address of num = 0x7ffc505d4a44
Now, read/input the memory address: 7ffc505d4a44
Memory address is: 0x7ffc505d4a44 and its value is: 123

Explicación:

En este programa, declaramos una unsigned int variable llamada num y se asigna la variable con el valor 123 .

Entonces, imprimimos el valor de num utilizando “% p” especificador de formato – se imprimirá la dirección de memoria de num – que es 0x7ffc505d4a44 .

Entonces, impulsamos un mensaje “Ahora, de lectura / entrada de la dirección de memoria:” para tomar la dirección de memoria de entrada – que introduzca la misma dirección de memoria que fue la dirección de memoria de num . El valor de entrada es 7ffc505d4a44 . Y se almacena la dirección de memoria a una variable puntero PTR . (Usted debe saber que sólo variable de puntero puede almacenar las direcciones de memoria Leer más:. Punteros en lenguaje C).

Nota: While de entrada, no se requiere “0x” .

Y finalmente, cuando imprimimos el valor utilizando la variable puntero PTR . El valor es 123 .


Deja un comentario

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