Cómo comprobar la ubicación de una variable en la programación c

En la programación C, tipo y tamaño de una variable son descubiertos por primera vez por la que se declara la variable como un tipo específico, sino también mediante el uso de la palabra clave sizeof. La segunda descripción de una variable, su contenido, puede ser obtenida mediante la lectura de valor de la variable usando la función del lenguaje C apropiado.

La tercera descripción de una variable es su ubicación en la memoria. A recopilar esta información mediante el uso de la & operador y el marcador de posición p%, como se muestra en O Variable, ¿á qué?

O VARIABLE, ¿á qué?

# include int main () {char c = `c`-int i = 123-float f = 98,6 doble d = 6.022E23-printf ("Dirección de `c` pn%",&c) -printf ("Dirección de la `i` % pn",&i) -printf ("Dirección de la `f` % pn",&f) -printf ("Dirección de `d` pn%",&d) -Retorno (0) -}

Cuando el & operador prefija una variable, devuelve un valor que representa la variable de dirección, o su ubicación en la memoria. Ese valor se expresa en hexadecimal. Para ver que el valor, se utiliza el carácter de conversión p%, como se muestra en O Variable, ¿á qué?

Ejercicio 1: Escriba el código fuente de O variable, ¿á qué? en su editor. Generar y ejecutar.

Los resultados producidos por el programa generado por el ejercicio 1 son únicos, no sólo para cada equipo, sino también, potencialmente, para cada vez que se ejecuta el programa.

Dirección de `c` 0x7fff5fbff8ffAddress de `i` 0x7fff5fbff8f8Address de `f` 0x7fff5fbff8f4Address de `d` 0x7fff5fbff8e8

Variable do se almacena en la memoria en lugar 0x7fff5fbff8ff - que es el número de decimales 140.734.799.804.671. Ambos valores son triviales, por supuesto- el equipo realiza un seguimiento de las posiciones de memoria, lo cual es muy bien por mí.

Esta ilustración muestra cómo esas direcciones trazar en la memoria.

elementos de matriz individuales tienen posiciones de memoria, así, como se muestra en las ubicaciones de memoria en una matriz en la línea 10. El & operador prefija la variable elemento específico, tos con una dirección. El carácter de conversión% p en la función printf () muestra la dirección.

Las posiciones de memoria en una matriz

#include int main () {char hola [] = "¡Hola!"-INT i = 0-while (hola [i]) {printf ("% C en% pn",Hola yo],&hola [i]) - i ++ -} return (0) -}

ejercicio 2: Crear un nuevo proyecto utilizando el código fuente mostrado en posiciones de memoria en una matriz. Generar y ejecutar.

Una vez más, la salida de posición de memoria es única en cada equipo.

H en 0x7fff5fbff8f0e en 0x7fff5fbff8f1l en 0x7fff5fbff8f2l en 0x7fff5fbff8f3o en 0x7fff5fbff8f4! en 0x7fff5fbff8f5

A diferencia del ejemplo de Ejercicio 1, las direcciones generados por el ejercicio 2 son contiguos en la memoria, un byte tras otro.

ejercicio 3: Codificar un programa para mostrar cinco valores en una matriz int junto con la dirección de memoria de cada elemento. Puede utilizar las ubicaciones de memoria en una matriz que te inspire, aunque un bucle podría ser más fácil de código.

  • Por cierto, la & memoria operador ubicación debe ser familiar para usted. Es usado por la función scanf (), que requiere la dirección de una variable, no la propia variable. Esto se debe a scanf () coloca un valor en un lugar de memoria directamente. ¿Cómo? Mediante el uso de punteros, por supuesto!

  • los & es también el operador AND bit a bit embargo operador, el compilador es suficientemente inteligente como para saber cuándo & prefijos una variable y cuando & es parte de una ecuación matemática binaria.

Artículos Relacionados