Comment vérifier l'emplacement d'une variable dans la programmation de c

Dans la programmation C, le type et la taille d'une variable sont découverts d'abord en déclarant que variable comme un type spécifique, mais aussi en utilisant le mot-clé sizeof. La deuxième description d'une variable, son contenu, peut être glanée par la lecture de la valeur de la variable en utilisant la fonction appropriée du langage C.

Le troisième description d'une variable est son emplacement dans la mémoire. Vous vous réunissez ces informations en utilisant le opérateur et le p espace réservé%, comme indiqué dans O variable, pourquoi es-tu?

O VARIABLE, pourquoi es-tu?

#include int main () {char c = 'c'-int i = 123-float f = 98,6 double d = 6.022E23-printf ("Adresse de' c '% p n", c) -printf (" Adresse du 'i'% p n ", i) -printf (" Adresse du 'f'% p n ", f) -printf (" Adresse de «d '% p n", d) -retour ( 0) -}

Quand le opérateur préfixes une variable, elle renvoie une valeur représentant la variable de adresse, ou de son emplacement dans la mémoire. Cette valeur est exprimée en hexadécimal. Pour voir cette valeur, le caractère% de conversion de p est utilisé, comme indiqué dans O variable, pourquoi es-tu?

Exercice 1: Tapez le code source à partir de O variable, pourquoi es-tu? dans votre éditeur. Construire et exécuter.

Les résultats produits par le programme généré de l'exercice 1 sont uniques, non seulement pour chaque ordinateur, mais aussi, potentiellement, chaque fois que le programme est exécuté.




Adresse de 'c' 0x7fff5fbff8ffAddress de 'i' 0x7fff5fbff8f8Address de 'f' 0x7fff5fbff8f4Address de «d» 0x7fff5fbff8e8

Variable c est stockée dans la mémoire à l'emplacement 0x7fff5fbff8ff - qui est la position décimale 140.734.799.804.671. Les deux valeurs sont trivial, bien sûr- l'ordinateur conserve la trace des emplacements de mémoire, ce qui est très bien par moi.

image0.jpg

Cette illustration montre comment ces adresses carte dans la mémoire.

Éléments individuels de tableaux ont des emplacements de mémoire ainsi, comme indiqué dans des emplacements mémoire dans un tableau sur la ligne 10. Le opérateur préfixe la variable d'élément spécifique, la toux une adresse. Le caractère de conversion% p dans la fonction printf () affiche l'adresse.

Emplacements de mémoire dans un tableau

#include int main () {char bonjour [] = "Bonjour!" - int i = 0-tout (bonjour [i]) {printf ("% c% au p n", bonjour [i], bonjour [i ]) - i ++ -} return (0) -}

Exercice 2: Créez un nouveau projet en utilisant le code de source indiqué sur emplacements mémoire dans un tableau. Construire et exécuter.

Encore une fois, la sortie de position de mémoire est unique sur chaque ordinateur.

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

Contrairement à l'exemple de l'exercice 1, les adresses générées par Exercice 2 sont contigus dans la mémoire, un octet après l'autre.

Exercice 3: Coder un programme pour afficher cinq valeurs dans un tableau de int avec l'adresse mémoire de chaque élément. Vous pouvez utiliser des emplacements mémoire dans un tableau pour vous inspirer, même si une boucle for peut-être plus facile à coder.

  • Soit dit en passant, la l'opérateur de l'emplacement de mémoire devrait vous être familier. Il est utilisé par la fonction scanf (), ce qui nécessite l'adresse d'une variable, pas la variable elle-même. Voilà parce scanf () accorde une grande valeur à un emplacement mémoire. Comment? En utilisant des pointeurs, bien sûr!

  • La l'opérateur est également le niveau du bit ET Toutefois, l'exploitant ou le compilateur est assez intelligent pour savoir quand préfixes et quand une variable fait partie d'une équation mathématique binaire.


» » » » Comment vérifier l'emplacement d'une variable dans la programmation de c