Cómo comprobar la ubicación de una variable en la programación c
En la programación C, el tipo y el tamaño de una variable se descubren primero declarando esa 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 utilizando la función del lenguaje C apropiado.
La tercera descripción de una variable es su ubicación en la memoria. Que se reúnen esta información mediante el uso de la operador y el p marcador de posición%, como se muestra en O Variable: ¿Por qué estás tú?
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 '% p n", c) -printf (" Dirección de la 'i'% p "-printf, i) (" n Dirección de 'f'% p n ", f) -printf (" Dirección de «d»% p n ", d) -Retorno ( 0) -}
Cuando el operador de prefijos 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 ese valor, se utiliza el carácter de conversión p%, como se muestra en O Variable: ¿Por qué estás tú?
Ejercicio 1: Escriba el código fuente de O Variable: ¿Por qué estás tú? en su editor. Genere y ejecute.
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 la 'c' 0x7fff5fbff8ffAddress de 'i' 0x7fff5fbff8f8Address de 'f' 0x7fff5fbff8f4Address de «d» 0x7fff5fbff8e8
Variable c se almacena en la memoria en lugar 0x7fff5fbff8ff - que es la ubicación decimal 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 la matriz individuales tienen posiciones de memoria, así, como se muestra en ubicaciones de memoria en una matriz en la línea 10. El operador de prefijos 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.
Posiciones de memoria en una matriz
#include int main () {char hola [] = "¡Hola!" - int i = 0, mientras (hola [i]) {printf ("% c en% p n", hola [i], hola [i ]) - i ++ -} return (0) -}
Ejercicio 2: Crear un nuevo proyecto mediante el código fuente se muestra en ubicaciones de memoria en una matriz. Genere y ejecute.
Una vez más, la salida de la posición de memoria es único 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 un array int junto con la dirección de memoria de cada elemento. Usted puede utilizar ubicaciones de memoria en una matriz que te inspire, aunque un bucle for puede ser más fácil de código.
Por cierto, la operador de ubicación de la memoria 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 operador es también el AND bit a bit del operador sin embargo, el compilador es lo suficientemente inteligente como para saber cuándo prefijos una variable y cuando es parte de una ecuación matemática binaria.