C_facile : Introduction au langage C
Cours

Données et adresses

Les données (constantes et valeurs de variables) que manipule un programme sont stockées dans des octets et par extension par groupe d'octets contigus, cela correspond au couple (identificateur, réceptacle).

Par exemple, un entier en C est une donnée stockée sur 2 ou 4 octets. Supposons qu'un entier est codé sur 2 octets. Quand on travaille sur un entier, on sait que l'on travaille sur un groupe de 2 octets rangés dans la mémoire centrale de la machine et que ces 2 octets sont contigus.

Chaque octet possède une adresse mémoire. Puisque la taille est connue (c'est 2), pour manipuler l'entier il suffit de connaître l'adresse de son premier octet. Le suivant sera automatiquement utilisé par le microprocesseur pour le effectuer le travail nécessaire.

Toute donnée doit être déclarée avant usage. Le compilateur se charge de vérifier la compatibilité des types des données impliquées dans une expression. Par exemple quand on écrit x+3, le compilateur vérifie que le type de l'identificateur x est compatible avec la valeur 3 (entière) par rapport à l'opération ‘+'.

Nous ne détaillerons pas la façon dont est codé un entier sur 2 octets. Ce n'est pas notre propos ici. Par contre, il est important de savoir, quand on programme en C, qu'une donnée est stockée sur plusieurs octets (sa taille), contigus au sein du ruban d'octets, et que, connaissant sa taille, il suffit de connaître l'adresse du premier pour avoir toute l'information.

Cette notion d'adresse d'une donnée est très importante car le C utilise abondamment les pointeurs qui sont des informations de type adresse d'un octet.

Remarque

Les architectures 64 bits commencent à se démocratiser. Potentiellement, elles peuvent gérer 2^64 octets de mémoire centrale. Soit 18446744073709551616 octets. Elles ont été conçues pour « casser » la barrière de 4Go.

Sur ces machines on peut avoir plus de 4Go de mémoire centrale. Dans ce cas une adresse sera manipulée sous la forme d'une valeur que l'on peut coder sur 8 octets.

Conceptuellement, cela ne change rien, il suffit uniquement de savoir si l'architecture est 32 ou 64.

Les types simples (page suivante)Octet et adresse (page Précédente)
AccueilImprimer creativecommons : by-nc-ndRéalisé avec SCENARI