Types de données en C
Les variables
Une variable est une partie de la mémoire de l'ordinateur que le programmeur alloue à son programme.
Elle peut ne contenir qu'une seule valeur (on parle alors de variable scalaire), ou plusieurs (tableaux, structures,...) sur laquelle (ou lesquelles) nous pouvons effectuer un calcul arithmétique.
C'est par la déclaration de la variable que nous allons lui attribuer un identificateur (son nom), et déterminer son type (le genre d'élément qui y sera rangé).
La spécification du type de la variable permet la réservation de la quantité de mémoire nécessaire, et répond à un ensemble de mots clés.
Déclaration de variable en C
Syntaxe: [classe] type identificateur [initialiseur];
Les éléments entre crochets sont facultatifs.
- Classe : voir page classe.
- Type : précédés du signe %, les types les plus souvent rencontrés sont int, char, et float
- Identificateur: c'est le nom que nous allons attribuer à la variable. La définition de plusieurs variables de même type en une seule instruction est possible en séparant les identificateurs par des virgules.
L'identificateur peut être composé de lettres (attention, le langage C fait la différence entre majuscules et minuscules), de chiffres, et du caractère _ (souligné), mais le premier caractère ne peut être un chiffre. Le caractère d'espacement (blanc) est interdit, ainsi que les caractères accentués.
Pour un pointeur, le nom est précédé du signe * (étoile). - Initialiseur : le signe = suivi d'une valeur, affecte cette valeur à la variable placée à gauche du signe.
Selon la durée de vie souhaitée pour une variable, on peut la déclarer à deux endroits différents. On parle alors de variable locale, ou de variable globale.
Déclaration variables locales
Pré requis: bloc d'instructions.
Le bloc d'instructions, rappelons le, est un ensemble de déclarations et d'instructions délimités par des accolades.
Une déclaration locale de variable est une déclaration effectuée à l'intérieur d'un bloc, et la durée de vie de la variable n'excède pas les limites du bloc.
Lorsque le programme atteint le début du bloc ({), la mémoire nécessaire aux variables locales est réservée en haut de la pile (dont la taille augmente donc), espace mémoire retiré de la pile à la sortie du bloc.
Le seul cas où la mémoire reste allouée pour cette variable (donc où la valeur que contient la variable est conservée) est le cas où on quitte un bloc pour aller dans une fonction appelée (mais dans ce cas le terme "quitter" le bloc est sujet à discussions).
La déclaration locale d'une variable évite donc le gaspillage de la mémoire, mais nous devons alors trouver une solution pour retourner la valeur de cette variable si elle doit être utilisée hors du bloc.
Exemple d'utilisation de variable locale:
Code c (2 lignes)
#include <stdio.h> int fonct2 (int var2);
Prototype de la fonction fonct2
Code c (5 lignes)
void main (void) { int var1=97; }
Entrée dans le bloc, déclaration et initialisation de var1 (pour info: à quoi correspond cette valeur dans le code ASCII ?).
Ensuite, nous faisons appel à la fonction fonct2
Code c (7 lignes)
int fonct2 (int var2) { int var3; var3=var2-32; var2=0; return(var3); }
Réservation d'un emplacement mémoire pour var2 (à laquelle on transmet la valeur de var1)en haut de la pile.
Entrée dans le bloc, et allocation d'un emplacement mémoire pour var3, à laquelle on affecte la valeur var2-32 (=65. Toujours pour info: que représente la valeur 65 dans le code ASCII ?).
Réinitialisation de var2 et retour de la valeur 65 vers la fonction main (libération de la mémoire allouée à var2 et à var3).
L'exécution du programme provoque donc la sortie à l'écran de la lettre A suivie d'un saut de ligne, et de la lettre a (fainéants, vous auriez pu chercher un peu...).
Tableau des principaux types de variables
Type | Signification | Argument |
---|---|---|
Type | Signification | Argument |
c | Un seul caractère< | char*arg |
d | Entier décimal< | int*arg |
D | Entier décimal< | long*arg |
e | Virgule flottante< | float*arg |
E | Virgule flottante< | double*arg |
f | Virgule flottante< | float*arg |
g | Virgule flottante< | float*arg |
G | Entier, octal, hexadécimal | double*arg |
i | Entier, octal, hexadécimal | int*arg |
I | Entier, octal, hexadécimal | int*arg |
o | Entier, octal, sans signe | int*arg |
O | Entier, octal, sans signe | long*arg |
p | Hexadécimal< | void far*arg / void near*arg |
s | Chaîne avec NULL | char tableau[] |
u | Entier décimal non signé | unsign.int*arg |
U | Entier décimal non signé | unsign.long*arg |
x | Entier hexadécimal non signé | int*arg |
X | Entier hexadécimal non signé | long*arg |
Version en cache
18/12/2024 16:38:58 Cette version de la page est en cache (à la date du 18/12/2024 16:38:58) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 19/03/2002, dernière modification le 07/04/2023
Source du document imprimé : https://www.gaudry.be/c-variables.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.