Vidéo: Exercices Python - Déterminer La Position d'un Caractère Sur Une Chaine Python 2024
En programmation C, le type et la taille d'une variable sont d'abord découverts en déclarant cette 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 en lisant la valeur de la variable en utilisant la fonction de langage C appropriée.
La troisième description d'une variable est son emplacement en mémoire. Vous rassemblez ces informations en utilisant l'opérateur & et l'espace réservé% p, comme indiqué dans O Variable, Wherefore Art Thou?
O VARIABLE, QUAND ART THOU?
#include int main () {char c = 'c'; int i = 123; flotteur f = 98. 6; double d = 6. 022E23; printf ("Adresse de 'c'% pn", & c); printf ("Adresse de 'i'% pn", & i); printf ("Adresse de 'f'% pn", & f); printf ("Adresse de 'd'% pn", & d); return (0);}
Lorsque l'opérateur & prefixe une variable, elle renvoie une valeur représentant l'adresse de la variable, ou son emplacement en mémoire. Cette valeur est exprimée en hexadécimal. Pour afficher cette valeur, le caractère de conversion% p est utilisé, comme indiqué dans O Variable, Wherefore Art Thou?
Exercice 1 : Tapez le code source de O Variable, Wherefore Art Thou? dans votre éditeur. Construire et courir.
Les résultats produits par le programme généré par l'exercice 1 sont uniques, non seulement pour chaque ordinateur, mais aussi, potentiellement, pour chaque exécution du programme.
Adresse de 'c' 0x7fff5fbff8ff Adresse de 'i' 0x7fff5fbff8f8 Adresse de 'f' 0x7fff5fbff8f4 Adresse de 'd' 0x7fff5fbff8e8
La variable c est stockée en mémoire à l'emplacement 0x7fff5fbff8ff - c'est la position décimale 140, 734, 799, 804, 671. Les deux valeurs sont, bien sûr, triviales; l'ordinateur garde la trace des emplacements de mémoire, ce qui est très bien par moi.
Cette illustration montre comment ces adresses sont mappées en mémoire.
Les éléments de tableau individuels ont également des emplacements de mémoire, comme indiqué dans Emplacements de mémoire dans un tableau sur la ligne 10. L'opérateur & prefixe la variable d'élément spécifique, crachant une adresse. Le caractère de conversion% p dans la fonction printf () affiche l'adresse.
EMPLACEMENTS DE MEMOIRE DANS UN TABLEAU
#include int main () {char hello [] = "Bonjour!"; int i = 0; while (bonjour [i]) {printf ("% c à% pn", bonjour [i], & bonjour [i]); i ++;} return (0);}
Exercice 2 : Créez un nouveau projet en utilisant le code source affiché dans Emplacements mémoire dans un tableau. Construire et courir.
Encore une fois, la sortie de l'emplacement de mémoire est unique sur chaque ordinateur.
H à 0x7fff5fbff8f0 e à 0x7fff5fbff8f1 l à 0x7fff5fbff8f2 l à 0x7fff5fbff8f3 o à 0x7fff5fbff8f4!à 0x7fff5fbff8f5
Contrairement à l'exemple de l'exercice 1, les adresses générées par l'exercice 2 sont contiguës en mémoire, un octet après l'autre.
Exercice 3 : Codez un programme pour afficher cinq valeurs dans un tableau int avec l'adresse mémoire de chaque élément. Vous pouvez utiliser des emplacements de mémoire dans un tableau pour vous inspirer, même si une boucle for peut être plus facile à coder.
-
Par ailleurs, l'opérateur & memory location devrait vous être familier. Il est utilisé par la fonction scanf (), qui nécessite l'adresse d'une variable, pas la variable elle-même. C'est parce que scanf () place une valeur directement dans un emplacement mémoire. Comment? En utilisant des pointeurs, bien sûr!
-
L'opérateur & est également l'opérateur AND au niveau du bit; cependant, le compilateur est assez intelligent pour dire quand & prefixes une variable et quand & fait partie d'une équation mathématique binaire.